我想将数据从csv导入到具有自动增量列的表中。但它会出错,因为id
列是自动递增的,它不接受。如何将数据导入该表?
我的表格中包含id
和name
我的 .csv 文件是
4 jack
10 carl
答案 0 :(得分:2)
诀窍是在这里使用序列而不是身份。文档描述了differences between sequence, auto_increment and identity。
您感兴趣的是,您确实可以使用序列强制列的值。当然,要小心自己没有重复,然后设置序列的下一个值,以确保您将避免将来重复。
最简单的例子是:
CREATE TABLE test (id INT, value VARCHAR(10));
CREATE SEQUENCE seqtest;
ALTER TABLE test ALTER COLUMN id set default NEXTVAL('seqtest');
然后,您可以看到它符合您的期望:
INSERT INTO test (value) VALUES ('default');
INSERT INTO test (id, value) VALUES (42, 'forced');
select * from test;
id | value
----+---------
1 | default
42 | forced
事后安全:
ALTER SEQUENCE seqtest RESTART WITH 43;