我正在尝试使用这个Postgres命令复制一个表,但是主键自动增量特性没有被复制。有没有快速简单的方法来完成这个任务?谢谢!
CREATE TABLE table2 AS TABLE table;
CREATE TABLE table2 AS TABLE table;
以下是我的做法:
BEGIN;
LOCK TABLE oldtable;
CREATE TABLE newtable (LIKE oldtable INCLUDING ALL);
INSERT INTO newtable SELECT * FROM oldtable;
SELECT setval('the_seq_name', (SELECT max(id) FROM oldtable)+1);
COMMIT;
虽然这是一件相对不常见的事情,但我对您想要解决的问题很感兴趣。
\copy ...
命令将 CSV 从本地加载到 RDS 实例中。在进行复制时,我包括了行的原始 id,但新表的序列计数器从0开始。 - nemo
CREATE TABLE ... LIKE
,然后是COPY
和任何必需的setval
语句来设置序列。 - Craig RingerCOPY
替换为INSERT INTO ... SELECT
。我当时没有考虑到这一点。 - Craig RingerBEGIN; LOCK TABLE thetable; SELECT setval('the_seq_name', (SELECT max(id) FROM thetable)+1); COMMIT;
- Craig Ringer