如何多次使用CSV文件更新Postgresql

时间:2018-09-10 09:56:52

标签: postgresql

我有一个CSV文件,其数据要导入到Postgres数据库中,我在pgadmin III中使用了导入功能来完成此操作,但问题是我的CSV文件经常更改,因此如何导入数据以覆盖数据库中已经存在的数据CSV文件?

1 个答案:

答案 0 :(得分:1)

您可以save WAL logging through an optimization between TRUNCATE/COPY in the same transaction。基本思想是使用TRUNCATE擦除数据库表,并使用COPY重新导入数据。不必每次都使用pgAdmin手动完成此操作。可以使用以下脚本编写脚本:

BEGIN;
  -- The CSV file is 'mydata.csv' and the table is 'mydata'.
  TRUNCATE mydata;
  COPY mydata FROM 'mydata.csv' WITH (FORMAT csv);
COMMIT;

请注意,它需要超级用户访问权才能工作。 COPY命令还采用了各种参数,因此您可以调整null和标头等的不同设置。

最后应注意,理想情况下,您希望两者都在同一事务中。我不会在这里使这个示例过于复杂,因为在现实世界中的许多情况下,如果要在CSV文件中进行复制,则不需要这种级别的关注。如果您认为自己的情况需要它,那么找到它并不是很难。