我在Postgresql中有一个现有表,它有一个id列(serial)用于行标识,并且是主键。我有一个脚本来导入CSV,它不包含id列。下面是我使用的代码:
file_list = glob.glob(path)
for f in file_list:
if os.stat(f).st_size != 0:
filename = os.path.basename(f)
arc_csv = arc_path + filename
data = pandas.read_csv(f, index_col = 0)
ind = data.apply(lambda x: not pandas.isnull(x.values).any(),axis=1)
data[ind].to_csv(arc_csv)
cursor.execute("COPY table FROM %s WITH CSV HEADER DELIMITER ','",(arc_csv,))
conn.commit()
os.remove(f)
else:
os.remove(f)
脚本无法导入表中存在id(p_key)列的CSV,因为它不存在CSV,因此我可以考虑两个选项: 1-发出命令,在导入之前删除id列,并在导入后将其添加回,或 2-通过my找到增加id列的方法光标.执行命令。在
我的问题是哪种方法更好,是一种很好的方法(当然也有人有更好的想法!)?谢谢。在
“复制”命令包含要插入的列。必须跳过列列表中的主键:复制表(col1,col2,…)
COPY documentation
相关问题 更多 >
编程相关推荐