Pergunta

Quando tento importar um csv para meu banco de dados Redshift, recebo este erro

Missing newline: Unexpected character 0x75 found at location 4194303                                

Tudo parece estar bem com o próprio csv.A tabela stl me diz que o erro está na linha 70269 do csv, que contém esta string

10:00:10,2014-07-28,Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0),Not Listed,Not Listed,Not Listed,Not Listed,multiRetrieve,Not Listed,OS-Preview-logItemUsage,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,"[{""PubEndDate""=>""2013/12/31"", ""ItmId""=>""1353296053"", ""SourceType""=>""Scholarly Journals"", ""ReasonCode""=>""Free"", ""MyResearchUser""=>""246763"", ""ProjectCode""=>"""", ""PublicationCode""=>"""", ""PubStartDate""=>""2013/01/01"", ""ItmFrmt""=>""AbstractPreview"", ""Subrole""=>""AbstractPreview"", ""PaymentType""=>""Transactional"", ""UsageInfo""=>""P-1008275-154977-CUSTOMER-10000137-2950635"", ""Role""=>""AbstractPreview"", ""RetailPrice""=>0, ""EffectivePrice""=>0, ""ParentItemId""=>""53628""}]","[""optype:Online"", ""location:null"", ""target:null""]",192.234.111.8,DIALOG,20140728131712007:882391,1119643,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,Not Listed,"2014-07-28 10:00:10-0400,421 {""Items"":[{""PubEndDate"":""2013/12/31"",""ItmId"":""1353296053"",""SourceType"":""Scholarly Journals"",""ReasonCode"":""Free"",""MyResearchUser"":""246763"",""ProjectCode"":"""",""PublicationCode"":"""",""PubStartDate"":""2013/01/01"",""ItmFrmt"":""AbstractPreview"",""Subrole"":""AbstractPreview"",""PaymentType"":""Transactional"",""UsageInfo"":""P-1008275-154977-CUSTOMER-10000137-2950635"",""Role"":""AbstractPreview"",""RetailPrice"":0,""EffectivePrice"":0,""ParentItemId"":""53628""}],""Operation"":[""optype:Online"",""location:null"",""target:null""],""UserAgent"":""Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"",""UserInfo"":{""IP"":""192.234.111.8"",""AppId"":""DIALOG"",""SessId"":""20140728131712007:882391"",""UsageGroupId"":""1119643""},""UsageType"":""multiRetrieve"",""BreadCrumb"":""OS-Preview-logItemUsage""}

Alguma idéia de por que não carrega?

EDITAR:Claramente tem a ver com o número ‘4194303’.Muitos dos meus uploads do redshift falharam. Aqui está uma breve amostra dos meus stl_load_errors

Missing newline: Unexpected character 0x3a found at location 4194303                                
Missing newline: Unexpected character 0x63 found at location 4194303                                
Missing newline: Unexpected character 0x6c found at location 4194303                                
Missing newline: Unexpected character 0x22 found at location 4194303                                

Todas as entradas na tabela onde ocorrem esses erros são do tipo 'texto' e existem cerca de 30 colunas.O próprio csv contém milhares de registros (arquivo csv bastante grande).

SOLUÇÃO ALTERNATIVA (não é uma solução)

Descobri que o número 4194303 vem do limite de 4 MB definido pelo recurso TRUNCATECOLUMNS de cópia do Redshift.Ao desabilitar esse recurso, recebo o erro "O comprimento da string excede o comprimento DDL" (é por isso que uso TRUNCATECOLUMNS em primeiro lugar).

Portanto, o problema é que muitos dos meus registros têm mais de 4 MB e o redshift não oferece suporte a esses registros se algum dos atributos precisar ser truncado.

No entanto, usando a opção MAXERROR 1000 do comando copy, posso ignorar os registros de mais de 4 MB e ficar com um banco de dados que contém apenas as linhas desejadas com menos de 4 MB.

Foi útil?

Solução

Você pode tentar o seu comando de cópia com opções abaixo adicionadas

acceptinvchars Escape

Algumas vezes quando você cria arquivos CSV da Mac ou Windows, eles podem conter caracteres especiais.

Outras dicas

O problema é com o caractere EOL (final da linha).Eu tive o mesmo problema hoje e a questão era que meu CSV tinha Mac Eol (provavelmente um cr).Eu mudei para o Unix (que usa um lf) e a cópia passou.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top