2017-02-16 9 views
1

Microsoft SQL ServerからPostgreSQLにデータを移行するにはPythonスクリプトを作成する必要があります。この問題は、ASCII以外の文字で発生します。 Microsoft SQL Serverのでは、私は、文字を取得するためにpyodbcを使用していた文字ms SQLからpostgres nonascii文字への移行エラーpython

â 

を保存型のnvarcharの列を持つテーブルの名前TABLE1を持っています。私の接続文字列は

"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に接続し、これが私の接続文字列パラメータのPostgreSQLでは

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

で、クライアントとサーバのエンコーディングは「latin1の」です「utf8」と表記しています。私はpsycopg2でコマンドを使用しました

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

しかし、PostgreSQLに格納されているデータは

Γ 

どこが間違っていたのですか?

+0

をpyodbc.version'が最新バージョンにpyodbcを更新し、 '4.0.6' を返さない '場合。あなたの結果に影響を与える可能性のあるいくつかの最近の変更がありました。 –

+0

また、 'cursor.execute( 'テーブル1の値(%s)'、(a、))に' –

答えて

0

は、Windowsのエンコーディングを確認し、それを置き換える:

cursor.execute ('insert into table1 values (%s)', a.decode('latin')); 
関連する問題