2017-02-16 3 views
1

Ich muss ein Python-Skript erstellen, um Daten von Microsoft SQL Server auf PostgreSql zu migrieren. Das Problem tritt bei nicht ASCII-Zeichen auf. In Microsoft SQL Server habe ich eine Tabelle namens Tabelle1 mit einer Spalte vom Typ nvarchar die ein Zeichen speichernMigration von ms sql zu postgres nonascii Zeichen Fehler Python

â 

ich Pyodbc bin mit dem Zeichen abzurufen. Meine Verbindungszeichenfolge ist

"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" 

Die Sortierung in MS SQL ist SQL_Latin1_General_CP1_CI_AS. Wenn ich Daten in Python abrufen, es

u'\xe2' 

Dann gibt, gebe ich Postgres über psycopg2 verbinden und dies ist meine Verbindungszeichenfolge Parameter

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

In PostgreSQL, die Client- und Server-Kodierung 'latin1' und 'utf8' jeweils. Ich benutzte den Befehl in psycopg2

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

. Aber die in PostgreSQL gespeicherten Daten sind

Γ 

Wo ging es schief?

+0

Wenn 'pyodbc.version' nicht zurück '4.0.6' dann aktualisieren Pyodbc auf die neueste Version. Es hat kürzlich einige Änderungen gegeben, die sich auf Ihre Ergebnisse auswirken könnten. –

+0

Versuchen Sie auch 'cursor.execute ('in table1 Werte einfügen (% s)', (a,))' –

Antwort

0

Überprüfen Sie die Windows-Kodierung und ersetzen es:

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