Файл Postgres COPY с кодировкой LATIN1 в таблицу с кодировкой UTF - PullRequest
5 голосов
/ 08 июня 2011

У меня проблема во время массовой вставки.Я пытаюсь сделать массовую вставку из файла с кодировкой LATIN1 в таблицу, где база данных с кодировкой UTF8.

invalid byte sequence for encoding "UTF8": 0xc33f 

Когда я делаю SET CLIENT_ENCODING = 'LATIN1' и после выполнения COPY из консоли, она работает нормально.но JDBC говорит мне, что он не может сделать SET CLIENT_ENCODING.

Пожалуйста, не могли бы вы предложить решение, как я могу обойти проблему.Спасибо!

1 Ответ

4 голосов
/ 08 июня 2011

Попробуйте установить для параметра подключения allowEncodingChanges значение true, чтобы разрешить (временно) изменить кодировку клиента на LATIN1. Согласно Таблица 22-2 PostgreSQL должен обрабатывать автоматическое преобразование набора символов между LATIN1 (клиент) и UTF8 (сервер).

Параметр client_encoding устанавливается водитель и не должен быть изменен. Если драйвер обнаружит изменение, оно будет прервать соединение. Есть один законное исключение из этого поведения хотя с помощью команды COPY на файл, находящийся на сервере файловая система. Единственное средство указав кодировку этого файла это путем изменения client_encoding установка.

Включите это, только если вам нужно переопределить кодировку клиента, когда делает копию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...