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