从csv文件复制数据

0 投票
1 回答
1799 浏览
提问于 2025-04-16 14:29

我正在尝试按照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()

撰写回答