从CSV文件中更新PostgreSQL表



我正在寻找一种方法来自动更新PostgreSQL表上的csv文件中的数据。

csv文件保存LabVIEW测试数据,每次执行都会更新,并存储在本地计算机上。

到目前为止,我能够从csv导入数据到表'test1'使用2种方法:

  1. 复制命令

    COPY test1 FROM 'C:Users..Test.csv' DELIMITER E't' CSV;
    

  2. 外部数据包装器(file_fdw)

    CREATE SERVER labview FOREIGN DATA WRAPPER file_fdw;
    CREATE FOREIGN TABLE labview_test (
    column1 text
    )
    SERVER labview OPTIONS (filename 'C:Users..Test.csv', format 'csv');
    
从这里我可以使用 将数据插入test1
    INSERT INTO test1 (column1) FROM labview_test;

这是ok的单一更新,但我需要这个过程是自动化的。我尝试使用触发器和触发器函数,我能够在外部表上创建触发器,但是当我运行新的LabVIEW测试时,表不会更新。

   CREATE FUNCTION copy_test ()
   RETURNS TRIGGER AS $$
   BEGIN
   INSERT INTO test1 VALUES (NEW.column1);
   RETURN NULL;
   END $$ LANGUAGE plpgsql;

   CREATE TRIGGER copy_trigger
   AFTER INSERT OR UPDATE ON labview_test
   FOR EACH ROW
   EXECUTE PROCEDURE copy_test ();

我在一个论坛帖子上读到file_fdw不支持触发器功能,有人能在最新版本的PostgreSQL(9.6)中确认这一点吗?

有没有人知道一种方法来自动更新表从外部表或从。csv文件直接?

不能在外部表上设置触发器,但是....

可以创建外表的物化视图。然后,您可以在物化视图上放置一个触发器。最后,您可以使用外部调度器刷新物化视图(与数据并发),这应该会导致触发器触发新数据。

相关内容

  • 没有找到相关文章

最新更新