неверная последовательность байтов для кодирования «UTF8» - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь загрузить CSV-файл размером 3 ГБ (24 миллиона строк) в базу данных greenplum с использованием gpload , но получаю сообщение об ошибке ниже

Ошибка -

 invalid byte sequence for encoding "UTF8": 0x8d

У меня есть пробное решение, предоставленное Майком , но для меня мои client_encoding и кодировка файлов уже совпадают. Оба являются ЮНИКОДОМ.

База данных -

show client_encoding;
"UNICODE"

Файл -

file my_file_name.csv
my_file_name.csv: UTF-8 Unicode (with BOM) text

Я также просмотрел документацию Greenplum , в которой говорится, что кодировка внешнего файла и базы данных должна совпадать. Это соответствует в моем случае, но как-то не получается.

Я также загрузил похожие файлы меньшего размера (тот же текст UTF-8 Unicode (с спецификацией))

Любая помощь приветствуется!

1 Ответ

1 голос
/ 15 апреля 2019

Опубликовано в другом потоке - используйте команду iconv, чтобы удалить эти символы из вашего файла. Greenplum создается с использованием набора символов, UTF-8 по умолчанию, и требует, чтобы все символы были из назначенного набора символов. Вы также можете зарегистрировать эти ошибки с помощью предложения LOG ERRORS EXTERNAL TABLE. Это отловит неверные данные и позволит вам продолжить установку LIMIT, который вы указали при создании.

iconv -f utf-8 -t utf-8 -c file.txt

очистит ваш файл UTF-8, пропустив все недопустимые символы.

-f is the source format
-t the target format
-c skips any invalid sequence
...