【问题标题】:Inserting data with pandas or psycopg with a serial key?用 pandas 或 psycopg 用序列号插入数据?
【发布时间】:2017-03-29 21:22:26
【问题描述】:

我有一个简单的维度表,它存储了来自多个文件的所有唯一维度。

在 postgres 中,我制作了表格:

CREATE TABLE dimension_purpose (
  purpose_key SERIAL PRIMARY KEY,
  purpose text NOT NULL UNIQUE
);

现在我正在尝试有效地将新行添加到此表中。我能够轻松识别新维度(使用熊猫),但我无法将它们插入此表。我通常使用

def load_to_database(table_name, file_object, header=True):
    fake_conn = sqlalchemy.create_engine(engine).raw_connection()
    fake_cur = fake_conn.cursor()
    sql = 'COPY {} FROM STDIN WITH CSV HEADER'.format(table_name)
    fake_cur.copy_expert(sql=sql, file=file_object)
    fake_conn.commit()
    fake_cur.close()

如果我尝试批量复制,我会收到“目的”不是整数的错误消息(它正在尝试将自己插入到 purpose_key 字段中)。

将单列数据插入目的字段然后自动更新 SERIAL purpose_key 的最佳方法是什么?

如果我的 df 只有一列,我可以使用 df.to_sql 执行此操作吗?

【问题讨论】:

    标签: pandas psycopg2


    【解决方案1】:

    您可以在COPY 命令中指定列,例如

    COPY dimension_purpose (purpose) FROM STDIN WITH CSV HEADER
    

    http://www.postgresql.org/docs/current/static/sql-copy.html

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-19
      相关资源
      最近更新 更多