2017-02-16 6 views
1

Microsoft SQL Server에서 PostgreSQL로 데이터를 마이그레이션하려면 python 스크립트를 만들어야합니다. 이 문제는 비 ASCII 문자에서 발생합니다. 마이크로 소프트 SQL 서버에서 나는 문자를 검색 할 pyodbc을 사용하고ms SQL에서 postgres nonascii 문자로의 오류 python

â 

문자를 저장 형 NVARCHAR의 열이있는 테이블라는 이름의 표가있다. 내 연결 문자열은

"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입니다. 내가 파이썬에서 데이터를 검색 할 때 , 그 다음

u'\xe2' 

을 제공 내가 psycopg2를 통해 포스트 그레스에 연결이 내 연결 문자열 매개 변수입니다

PostgreSQL의에서
"postgres":{ 
    "host":"127.0.0.1", 
    "user":"postgres", 
    "password":"regards", 
    "database":"cmots", 
    "port":"5432" 

는, 클라이언트와 서버 인코딩은 '라틴' 및 'utf8'로 표시됩니다. psycopg2에서 명령을 사용했습니다.

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

그러나 PostgreSQL에 저장된 데이터는

Γ 

어디에서 잘못 되었습니까?

+0

'경우 최신 버전으로 pyodbc을 업데이트합니다. 귀하의 결과에 영향을 미칠 수있는 몇 가지 최근 변경 사항이 있습니다. –

+0

또한'cursor.execute ('table1 값 (% s)', (a,))에 삽입' –

답변

0

확인 윈도우 인코딩 및 교체 : pyodbc.version`는 '4.0.6'을 반환하지 않습니다

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