Я пытаюсь загрузить серию таблиц (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
. Не уверен, что это поможет. Спасибо всем заранее.