Как исправить ошибку кодирования, чтобы загрузить текстовый файл размером 5 ГБ, используя psql? (ОШИБКА: неверная последовательность байтов для кодировки "UTF8": 0x92) - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь загрузить серию таблиц (TXT-файлов) в базу данных PostgreSQL, которая работает на моем Windows 10 рабочем столе. Я использую psql для загрузки файлов. Я успешно загрузил пару таблиц, но самая большая (5 ГБ с более чем 20 миллионами строк) доставляет мне проблемы:

databasename=# \copy table1 FROM 'C:\Users\tablename.txt' DELIMITER ',' CSV HEADER;
ERROR: character with byte sequence 0x9d in encoding "WIN1252" has no equivalent in encoding "UTF8"
CONTEXT: COPY table1, line 581330

Я нашел ответ здесь , в котором предлагалось проверить кодировку клиента ...

databasename=# SHOW client_encoding;
client_encoding
-----------------
WIN1252
(1 row)

и затем измените его, что я пробовал:

databasename=# SET CLIENT_ENCODING TO 'utf8';
SET

Затем я снова пытаюсь повторить ту же команду копирования и получаю следующую ошибку:

ERROR: invalid byte sequence for encoding "UTF8": 0x92
CONTEXT: COPY table1, line 206051

Я прочитал немного о 0x92 здесь . Звучит так, как будто в файле есть символ, который невозможно кодировать, когда я пытаюсь выполнить команду \ copy.

Некоторый фон:

Мне удалось загрузить около 1 миллиона строк в SQL Server 2019 (бесплатная версия) с использованием мастера импорта и экспорта SQL Server. (Я остановил импорт, потому что это заняло слишком много времени.) Я также смог просмотреть файл в R, используя read.csv. Не уверен, что это поможет. Спасибо всем заранее.

...