我对python(和代码)还比较陌生,尝试使用copyïu from时,我已经吃不消了。
我从csv中读取行,对它们进行一点操作,然后将它们写入sql。使用普通的insert命令需要很长的时间,需要数十万行,所以我想使用copy\u from。不过,它确实可以与insert一起使用。
https://www.psycopg.org/docs/cursor.html#cursor.copy_from 本例使用制表符作为列分隔符,并在每行末尾使用换行符,因此我相应地创建了每一个io行:
43620929 2018-04-11 11:38:14 30263506 30263503 30262500 0 0 0 0 0 1000 1000 0
以下是第一个print语句的输出:
def copyFromIO(thisOutput):
print(thisOutput.getvalue())
cursor.copy_from(thisOutput, 'hands_new')
thisCommand = 'SELECT * FROM hands_new'
cursor.execute(thisCommand)
print(cursor.fetchall())
new是一个现有的空sql表。第二个print语句只是[],所以它没有写入db。我做错什么了?
显然,如果它工作,我可以使这个输出更长,有很多行,而不是只有一行。
1条答案
按热度按时间dohp0rv51#
我想我知道了,所以如果将来有人因为某种原因遇到这个问题:
“thisoutput”格式错误,我用较小的片段构建它,包括添加“\t”等。如果我这样做,它会工作:
copyFromIO(io.StringIO('43620929\t2018-04-11 11:38:14\t30263506\t30263503\t30262500\t0\t0\t0\t0\t0\t1000\t1000\t0\n'))
&我需要copy\u from命令中的正确列: