从csv文件复制数据
我正在尝试按照StackOverflow上一个关于copy_from的例子来做,但我稍微修改了一下,因为我需要从csv文件中读取数据。根据这个例子,我写了一个小程序,程序会从磁盘上的文件读取数据,然后把这些数据复制到我创建的表里。我的代码是:
def importFile():
path = "C:\myfile.csv"
curs = conn.cursor()
curs.execute("Drop table if exists test_copy; ")
data = StringIO.StringIO()
data.write(path)
data.seek(0)
curs.copy_from(data, 'MyTable')
print("Data copied")
但是我遇到了一个错误,
psycopg2.DataError: 整数的输入语法无效:
这是否意味着csv文件和我的表之间有不匹配的地方?或者说这个语法足够用来复制csv文件吗?还是我需要更多的代码?我对python还很陌生,所以任何帮助都非常感谢。
1 个回答
2
用文本编辑器打开你的 .csv 文件。你需要确认以下几点:
- 字段之间的分隔符是制表符(Tab键)
- 文件中没有引号字符
- 文件里没有标题行
如果这些都符合,那么接下来的内容应该可以正常运行:
import psycopg2
def importFromCsv(conn, fname, table):
with open(fname) as inf:
conn.cursor().copy_from(inf, table)
def main():
conn = ?? # set up database connection
importFromCsv(conn, "c:/myfile.csv", "MyTable")
print("Data copied")
if __name__=="__main__":
main()