Impossible d'importer des CSV sur Postgers (caractère inattendu trouvé à l'emplacement 4194303)

StackOverflow https://stackoverflow.com//questions/25022965

Question

Lorsque j'essaie d'importer une CSV dans ma base de données redshift, je reçois cette erreur

Missing newline: Unexpected character 0x75 found at location 4194303                                

Tout semble aller bien avec le CSV lui-même. La table stl me dit que l'erreur est en ligne 70269 de la CSV, qui contient cette chaîne

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""}

Des idées pourquoi il ne se chargera pas?

Edit: il a clairement à voir avec le numéro '4194303'. Beaucoup de mes téléchargements redshift ont échoué, voici un bref échantillon de mon 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                                

Toutes les entrées de la table dans lesquelles ces erreurs se produisent de type 'Text', et il y a environ 30 colonnes. Le CSV lui-même contient plusieurs milliers d'enregistrements (assez grand fichier CSV).

Solution de contournement (pas une solution)

J'ai constaté que le numéro 4194303 provient de la limite de 4 Mo définie par la caractéristique des truncatecolumns de la copie redshift. En désactivant cette fonctionnalité, une "longueur de chaîne dépasse la longueur ddl" (c'est pourquoi j'utilise des truncatecolumns en premier lieu).

Le problème est donc que nombre de mes dossiers sont de plus de 4 Mo et que RedShift ne prend pas en charge de tels enregistrements si l'un des attributs doit être tronqué.

Toutefois, en utilisant l'option MaxError 1000 de la commande de copie, je suis capable d'ignorer les enregistrements de 4 Mo + et d'être laissé avec une base de données qui ne contient que les lignes que je voulais moins de 4 Mo.

Était-ce utile?

La solution

Pouvez-vous essayer votre commande de copie avec des options ci-dessous ajoutées

AccepterInvchars Escape

Quelques fois lorsque vous créez des fichiers CSV à partir de Mac ou de Windows, ils peuvent contenir des caractères spéciaux.

Autres conseils

Le problème est avec le caractère EOL (fin de ligne).J'ai eu le même problème aujourd'hui et la question était que mon CSV avait Mac EOL (probablement un CR).Je l'ai changé à UNIX (qui utilise un LF) et la copie passée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top