我有一个包含列名和数据的 CSV,但没有列 ID。当我通过此命令行导入数据时:
type "..\MyCSVtoImport.csv" | "..\psql.exe" -h MyServerPostgres -p 5432 -U "MyUser" -c " COPY mytable FROM STDIN DELIMITER ',' CSV HEADER; " MyBase
我仍然有这个错误:错误:列“id”缺少数据
谢谢你的帮助
我有一个包含列名和数据的 CSV,但没有列 ID。当我通过此命令行导入数据时:
type "..\MyCSVtoImport.csv" | "..\psql.exe" -h MyServerPostgres -p 5432 -U "MyUser" -c " COPY mytable FROM STDIN DELIMITER ',' CSV HEADER; " MyBase
我仍然有这个错误:错误:列“id”缺少数据
谢谢你的帮助
替代解决方案:
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
. 此外,这可能需要根据您是追加还是以 empty 开始进行调整mytable
。可能需要附加一个ON CONFLICT
子句。
您可以使用以下命令指定列列表COPY
:
COPY mytable (col1, col2, ...) FROM STDIN;
在这里,您只需列出除 之外 的所有列id
。