2017-02-16 12 views
1

Мне нужно создать скрипт python для переноса данных с Microsoft SQL Server на PostgreSql. Проблема возникает с символами без ascii. В Microsoft SQL Server у меня есть таблица с именем table1 с полем типа NVARCHAR хранящего персонажемМиграция из ms sql в postgres nonascii символов ошибка python

â 

Я использую pyodbc для получения символа. Моя строка соединения

"ms_sql":{ 
    "DRIVER":"{SQL Server Native Client 11.0}", 
    "SERVER":"(localdb)\\v11.0", 
    "DATABASE":"sheshant_database", 
    "Trusted_Connection":"yes", 
    "charset":"SQL_Latin1_General_CP1_CI_AS" 

Сопоставление в MS SQL является SQL_Latin1_General_CP1_CI_AS. Когда я извлечения данных в Python, это дает

u'\xe2' 

Затем я подключаюсь к Postgres через psycopg2 и это мое соединение строковый параметр

"postgres":{ 
    "host":"127.0.0.1", 
    "user":"postgres", 
    "password":"regards", 
    "database":"cmots", 
    "port":"5432" 

В PostgreSQL, кодировка клиента и сервера «latin1» и 'utf8' соответственно. Я использовал команду в psycopg2

'insert into table1 values ('+ a +');' // here a is a unicode and a = u'\xe2' 

. Но данные, хранящиеся в PostgreSQL, равны

Γ 

Куда пошло не так?

+0

Если 'pyodbc.version' не возвращает '4.0.6' обновите pyodbc до последней версии. Было несколько недавних изменений, которые могут повлиять на ваши результаты. –

+0

Также попробуйте 'cursor.execute ('insert into values1 values ​​(% s)', (a,))' –

ответ

0

Проверьте кодировку Windows, и заменить его:

cursor.execute ('insert into table1 values (%s)', a.decode('latin'));