说到插入数据,一开始就想到:
insert int A values(*******************)
插入多条数据,最多想到:
1.prepare,然后再bind参数,最后一次性插入多条
2.写成这样:
insert into A values(**********),(*************),(*****************)
但是在百万数据面前,都太慢了。
postgresql提供了copy函数,方便批量导入数据。
copy_from的参数说明:copy_from(file, table, sep='\t', null='\\N', size=8192, columns=None)
python写法如下:
#encoding=utf-8
import psycopg2
import StringIO
if __name__=='__main__':
s = ""
for i in range(0,1000000):
s += str(i)+"\taaa\t13434\t1\t2013-01-11\t1\t2\n"
conn = psycopg2.connect(host='localhost',user="test",password="********",database="test")
cur = conn.cursor()
cur.copy_from(StringIO.StringIO(s),'tb_user',columns=('id','userame','passwd','roleid','lasttime','failnum','info'))
conn.commit()
cur.close()
conn.close()
print 'done'