4
我進口一些行到我的Postgres數據庫,像這樣:導入和覆蓋重複的行
psql -U postgres import_test < 1432798324_data
凡我import_test
是我的數據庫和1432798324_data
文件只是格式化喜歡純文本:
COPY cars FROM stdin;
<row data>
<row data>
...
\.
COPY drivers FROM stdin;
<row data>
<row data>
...
\.
(我從答案here得到了這個純文本文件的格式)。
當我輸入空白數據庫時,此方法正常工作。但是,如果數據庫不爲空,並在導入過程中的任何重複的行發現我得到一個錯誤:
ERROR: duplicate key value violates unique constraint "car_pkey"
有什麼辦法,我可以修改我的輸入命令來強制覆蓋,如果重複被發現?換句話說,如果我正在導入一行,並且已經有一行包含該ID,我希望我的新行覆蓋它。
所以這段代碼在我的純文本文件中?基本上,我的純文本中每個表都有這樣的代碼塊? – Robert
另外,是否有更有效的方法來做到這一點,因爲這些表中有一些具有數百萬行?這必須插入所有行2次嗎? – Robert