2011-04-21 3 views
2

사전에 저장된 값을 테이블에 삽입하고 싶습니다. 이 사전에는 1000000 개의 값이 포함되어 있습니다.Copy_from 테이블의 사전 값을 복사하려면

내 사전의 예입니다 : 나는 테이블에이 값을 복사 copy_from 명령 (psycopg2)를 사용하는 기대

mydictationary: {"a":1; "b":2; "c":3; "d":4} 

. 같은 뭔가 :

cur.copy_from (mydictationary, myTable) 

그러나 사전에서 값을 복사 inorder를 copy_from 명령을 사용하는 것이 가능하다 ??? 이 명령은 sql insert 문을 사용하는 것보다 빠르기 때문에 copy_from 명령을 사용하고 싶습니다.

+0

테이블을 사용하여 주장하는 경우? – vartec

답변

2

정상적인 방법은 그것을 할 수 있습니다 :

cur.executemany('INSERT INTO myTable (key, value) VALUES (%s, %s)', mydictionary.items()) 

당신은 데이터베이스 테이블로 StringIO

import StringIO 
dictFile = StringIO.StringIO() 
for item in dictionary.iteritems(): 
    dictFile.write("%s\t%s\n"%item) 
cur.copy_from(dictFile, 'myTable') 
+0

그러나 우리는 stdin 또는 버퍼에서 데이터를 복사하는 동안 이전처럼 copy_from 명령을 사용할 수 없습니까 ?? 다음과 같은 : data = StringIO.StringIO() 그리고 copy_from (data, mytable) 그리고 psycopg2.ProgrammingError와 같은 문법 오류가 발생했습니다 : "또는"근처의 문법 오류 –

+0

psycopg2가 그 스타일을 이해하지 못하기 때문입니다. 인수의. – vartec

관련 문제