【问题标题】:Postgres How to import CSV ignoring a column id is bigserialPostgres如何导入CSV忽略列ID是bigserial
【发布时间】:2021-11-30 01:47:44
【问题描述】:

我有一个包含列名和数据的 CSV,但没有列 ID。 当我通过这个命令行导入我的数据时:

type "..\MyCSVtoImport.csv" | "..\psql.exe" -h MyServerPostgres -p 5432 -U "MyUser" -c " COPY mytable FROM STDIN DELIMITER ',' CSV HEADER; " MyBase

我仍然有这个错误:错误:“id”列缺少数据

感谢您的帮助

【问题讨论】:

  • 你是追加到表还是新建?

标签: postgresql import cmdline-args


【解决方案1】:

你可以用COPY指定一个列列表:

COPY mytable (col1, col2, ...) FROM STDIN;

在这里您只需列出所有列除了id

【讨论】:

  • thk,我有200多列,除了id有没有办法说
  • 不,很遗憾没有。您可以查询 information_schema.columns 并以编程方式构造 SQL 语句。
【解决方案2】:

替代解决方案:

CREATE mytable_import AS SELECT * FROM mytable LIMIT 0;
ALTER TABLE mytable_import DROP COLUMN id;

--COPY to mytable_import

INSERT INTO mytable SELECT nextval('mytable_id_seq') AS id, * FROM mytable_import;

将实际序列名称替换为nextval。此外,这可能需要调整,具体取决于您是追加还是以空 mytable 开头。可能需要附加一个ON CONFLICT 子句。

【讨论】:

    猜你喜欢
    • 2011-04-19
    • 2011-03-15
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 2021-01-03
    • 2014-02-24
    相关资源
    最近更新 更多