Не может импортировать CSV в Postgres (неожиданный персонаж найден в месте 4194303)

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

Вопрос

Когда я пытаюсь импортировать CSV в мою базу данных Redshift, я получаю эту ошибку

Missing newline: Unexpected character 0x75 found at location 4194303                                
.

Все, кажется, хорошо с самим CSV. Таблица STL сообщает мне, что ошибка находится в строке 70269 CSV, которая содержит эту строку

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

Есть идеи, почему это не будет загружаться?

Редактировать: это явно связано с номером '4194303'. Многие из моих загрузочных загрузок потерпели неудачу, вот краткий образец моей 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                                
.

Все записи в таблице, где эти ошибки возникают типовой «текст», и есть около 30 столбцов. Сам CSV содержит много тысяч записей (довольно большой файл CSV).

<Сильный> Обходной путь (не решение)

Я обнаружил, что номер 4194303 поставляется из пределов 4 МБ, установленным функцией TruncaTeColumns Copying readshift. Отключая эту функцию, я получаю «длину строки превышает ошибку длины DDL» (поэтому я использую TruncateColumns в первую очередь).

Так что проблема в том, что многие из моих записей более 4 МБ, а Redshift не поддерживает такие записи, если какая-либо из атрибутов необходимо усечить.

Однако, используя опцию MaxError 1000 команды копирования, я могу игнорировать записи 4 МБ + и оставить с базой данных, которая содержит только строки, которые я хотел, чтобы это менее 4 МБ.

Это было полезно?

Решение

Можете ли вы попробовать команду вашей копии с добавленными параметрами ниже

<Сильные> AcceptInvhars Escape

Некоторые времена, когда вы создаете файлы CSV из Mac или Windows, они могут содержать специальные символы.

Другие советы

Проблема с символом EOL (конец линии).У меня была такая же проблема сегодня, и этот вопрос заключался в том, что мой CSV имел Mac EOL (вероятно, CR).Я изменил его в UNIX (который использует LF), и копия прошла.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top