импортировать данные из Excel в Postgres в Python, используя Pyodbc - PullRequest
2 голосов
/ 23 ноября 2011

Я импортирую данные из MS-Excel в PostgreSQL в python(2.6) с использованием pyodbc.

Возникла проблема:

В исходном коде Excel есть такие символы, как left single quotation mark(ANSI hex code : 0x91) и т. Д.Теперь, когда он импортируется в PostgreSQL с использованием pyodbc, он завершает работу и выдает ошибку DatabaseError: invalid byte sequence for encoding "UTF8": 0x91.

Что я пробовал: Я использовал decode('unicode_escape') на данный момент.Но это не может быть сделано, поскольку это просто удаляет / убирает соответствующий символ.

Альтернативная пробная версия: Первоначально декодируйте, везде используйте Unicode, а затем кодируйте позже, когда это необходимо, из базы данных.Этого также нельзя сделать из-за масштабности проекта.

Пожалуйста, предложите мне несколько методов / процедур / встроенных функций для выполнения задачи.

1 Ответ

1 голос
/ 23 ноября 2011

Узнайте реальную кодировку исходного документа.Это может быть WIN1251.Либо перекодируйте его (например, с помощью iconv ), либо установите client_encoding в PostgreSQL соответствующим образом.

Если у вас нет настройки в pyodbc (чего я не знаю), вы всегда можете выполнить простую команду SQL:

SET CLIENT_ENCODING TO 'WIN1251';

Подробнее в главе «Автоматическое преобразование набора символов между сервером и клиентом» руководства.

...