SQL Server сгенерировал данные «Текстового файла» для импорта в postgressql с помощью команды копирования - PullRequest
0 голосов
/ 12 февраля 2011

У меня есть один текстовый файл, сгенерированный с использованием SQL Server 2005. Хотя я импортирую текстовый файл в одну из моих таблиц PostgreSQL с помощью «copy», он выдает следующую ошибку:

ERROR:недопустимая последовательность байтов для кодировки «UTF8»: 0xff

Может кто-нибудь сказать мне, что мне нужно сделать, чтобы получить данные из SQL Server 2005 в PostgreSQL?

Ответы [ 3 ]

4 голосов
/ 30 ноября 2012

У меня была точно такая же ситуация (за исключением SQL Server 2008 вместо 2005). Когда я экспортировал файл с помощью «Мастера импорта и экспорта SQL Server» и выбрал «Плоский файл» в качестве пункта назначения, для параметра «Кодовая страница» по умолчанию было установлено значение «1252 (ANSI - Latin I)». Таким образом, при запуске команды копирования в postgreSQL я использовал set client_encoding to 'LATIN1'; copy tablename FROM 'path/to/file.csv' DELIMITERS '|' CSV; - и она успешно выполнена.

1 голос
/ 12 февраля 2011

Текстовый вывод SQL Server (файлы BCP?) В прошлом был записан как UTF-16, который является кодировкой Unicode, которую PostgreSQL не поддерживает. Файлы UTF-16 начинаются с 0xff 0xfe (или 0xfe 0xff), так что это будет одной из причин, по которым сначала нужно получить жалобу на конкретное значение байта.

В Linux или аналогичной системе я бы предложил использовать утилиты «перекодировать» или «iconv» для преобразования из UTF-16 в UTF-8, что является предпочтительной для Ungode кодировкой PostgreSQL. Одна рекомендация для выполнения этой задачи в Windows - просто получить версию перекодирования для Windows: Преобразование UTF-16 в UTF-8 (для сценариев в Windows)

1 голос
/ 12 февраля 2011

Если файл не указан в кодировке Windows-1252, вы можете переключить кодировку с помощью set client_encoding=windows_1252 перед выполнением команды копирования.

Ознакомьтесь с руководством для получения списка доступных кодировок:
http://www.postgresql.org/docs/9.0/static/multibyte.html

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