【问题标题】:PostgreSQL COPY from file results in empty tablePostgreSQL COPY from file 导致空表
【发布时间】:2019-03-18 08:18:51
【问题描述】:

我正在使用以下代码将数据从 .csv 文件复制到表中:

带有标题的csv文件(逗号分隔):

uid,name,val1,val2,file
SKU001,glasses,blue,metal,block_0
...

创建表:

ih_sql = 'CREATE TABLE "sku_data" (uid VARCHAR, name VARCHAR, val1 VARCHAR, val2 VARCHAR, file VARCHAR, PRIMARY KEY (uid));'
engine.execute(ih_sql)
#<sqlalchemy.engine.result.ResultProxy at 0x7fee9b8ff550>

复制数据:

ih_file = os.path.abspath(f'{PATH}data.csv')
copy_sql = f"COPY sku_data FROM '{ih_file}' WITH CSV HEADER DELIMITER ','"
engine.execute(copy_sql)
#<sqlalchemy.engine.result.ResultProxy at 0x7fee9b8ff710>

但是结果表是空的,创建了零行。我怎样才能弄清楚为什么没有从 csv 文件中复制数据?

【问题讨论】:

标签: python postgresql sqlalchemy


【解决方案1】:

您必须明确提交事务,例如:

copy_sql = f"COPY sku_data FROM '{ih_file}' WITH CSV HEADER DELIMITER ','"
connection = engine.connect()
with connection.begin():
    connection.execute(copy_sql)

阅读更多Understanding Autocommit.

【讨论】:

    猜你喜欢
    • 2022-12-27
    • 2011-08-15
    • 2015-10-19
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多