我想用此postgres命令複製表,但主鍵自動增量功能不會複製。有沒有什麼快速簡單的方法來完成這一點?謝謝!複製Postgres表,同時保持主鍵自動增量
CREATE TABLE table2 AS TABLE table;
我想用此postgres命令複製表,但主鍵自動增量功能不會複製。有沒有什麼快速簡單的方法來完成這一點?謝謝!複製Postgres表,同時保持主鍵自動增量
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;
...雖然這是一個適度的不尋常的事情需要做,我很感興趣,你要解決什麼問題。
我正在構建工具來補償PostgreSQL無法不被瘋狂地複製,而不是通過複製粘貼來恢復數據庫目錄,如果構建工具失敗我可以使用我的表複製工具來快速複製現有表並重試執行另一個PostgreSQL工具很快。我*可以*使用控制檯,但是我必須每次都構造查詢(sans up key),GUI優於在GUI能夠勝任構建時快速完成任務。感謝您分享您的答案。 – John 2015-02-10 16:16:46
這爲我工作。我將舊錶格轉儲爲CSV,然後使用'\ copy ....'命令將CSV從本地加載到RDS實例。當我做了副本時,我包含了行的原始ID,但新表的序列計數器從0開始 – nemo 2017-09-14 15:22:57
PostgreSQL中不存在這樣的命令。您正在使用的命令的*精確文本*是什麼?你在使用什麼PostgreSQL版本/版本?像EnterpriseDB的Postgres Plus的一些變種?最接近的Pg等價物是使用'CREATE TABLE ... LIKE'後面跟着'COPY'和任何所需的'setval'語句來設置序列。 – 2013-03-06 04:09:00
謝謝,我剛剛創建了具有相同模式/設置的表格,然後將所有值複製到新表格中。 – sheldonk 2013-03-06 04:13:27
如果您想要避免臨時文件,請用'INSERT INTO ... SELECT'替換上面的註釋中的'COPY'。沒在想。 – 2013-03-06 04:14:27