从ms sql迁移到postgres nonascii字符错误python

时间:2017-02-16 18:41:21

标签: python sql-server postgresql psycopg2 pyodbc

我需要创建一个python脚本来将数据从Microsoft SQL Server迁移到PostgreSql。非ascii字符会出现此问题。在Microsoft SQL Server中,我有一个名为table1的表,其中包含一个类型为nvarchar的列,用于存储字符

â

我正在使用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'

然后我通过psycopg2连接到postgres,这是我的连接字符串参数

    "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中存储的数据是

Γ

哪里出错了?

1 个答案:

答案 0 :(得分:0)

检查Windows编码并替换它:

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