如何将SQL查询结果保存为一系列INSERT语句并写入.sql文件中。

5 浏览
0 Comments

如何将SQL查询结果保存为一系列INSERT语句并写入.sql文件中。

我正在处理一个PostgreSQL数据库。我想将SELECT查询的结果作为INSERT语句列表,并将它们保存到一个.sql文件中(假设为exported_data.sql)。

这是因为以后我想在另一个数据库上运行.sql文件,将数据“导入”到表中,以使表得到“更新”。

psql my_database -h my_host < exported_data.sql

假设我的查询是:

SELECT *
FROM params_table 
WHERE params_type = 'tkt';

从这个帖子中,我看到一种方法是:

  1. 创建一个临时表,填充查询结果

     CREATE TABLE temporary_table 
     AS 
         SELECT *
         FROM params_table
         WHERE params_type  = 'tkt';
    

  2. 将表导出为.sql文件的INSERT语句列表

     pg_dump --table=temporary_table --data-only --column-inserts my_database -h my_host > exported_data.sql
    

  3. 删除表,以保持数据库干净。

     DROP TABLE temporary_table;
    

有没有一种一次完成的方法?

我之所以问这个问题,是因为我不想每次需要导出一些数据时都创建和删除临时表。

我从这个帖子中看到,对于MySQL数据库,可以一次完成:

mysqldump -u root -p my_database -h my_host params_table --where="params_type  = 'tkt'" > exported_data.sql

所以我阅读了Postgresql的pg_dump文档,但我找不到--where子句的等效选项。

0