我有一个CSV文件,其数据要导入到Postgres数据库中,我在pgadmin III中使用了导入功能来完成此操作,但问题是我的CSV文件经常更改,因此如何导入数据以覆盖数据库中已经存在的数据CSV文件?
答案 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文件中进行复制,则不需要这种级别的关注。如果您认为自己的情况需要它,那么找到它并不是很难。