在python中引用了分隔符游标copy_from

时间:2013-08-13 07:00:44

标签: python sql psycopg2

有没有办法提供像

这样的引用分隔符
import psycopg2


f_cm = open('cm.sql', 'r')

constr = "dbname='mydb' user= 'pgsql' host='127.0.0.1'"
db = psycopg2.connect(constr)
st = db.cursor()

#st.copy_from(f_cm, 'mytable', sep='","', columns = ('col1','col2', 'col3'))
#instead of 
st.copy_from(f_cm, 'mytable', sep=',', columns = ('col1','col2', 'col3'))

日期格式为:

"54654","4454","45465"
"54546","4545","885dds45"
"54536","4546","885dd45"

我在psycopg搜索并发现了好消息 New in psycopg2.0.9

转到标题psycopg 2.0.9中的新内容,其中指出: copy_from()和copy_to()现在可以使用带引号的分隔符。

工具:

psycopg2 = 2.4.5
python = 2.7.3

1 个答案:

答案 0 :(得分:7)

似乎像cursor.copy_from或copy_to不支持引用表。解决方案是使用copy_expert。

import psycopg2


f_cm = open('cm.sql', 'r')

constr = "dbname='mydb' user= 'pgsql' host='127.0.0.1'"
db = psycopg2.connect(constr)
st = db.cursor()

copy = "COPY mytable(col1,col2, col3) FROM STDIN with csv"
st.copy_expert(sql=copy, file=f_cm)

db.commit()
st.close()
db.close()