2016-10-28 8 views
1

PostgreSQLのテーブルのcsvファイルからデータを自動的に更新する方法を見つけようとしています。CSVファイルからPostgreSQLテーブルを更新する

csvファイルにはLabVIEWテストデータが格納されており、実行時に更新され、ローカルコンピュータに保存されます。

これまでのところ、私はテーブルにcsvファイルからデータをインポートすることができています 'test1の' 2つの方法を使用して:

  1. COPYコマンド

    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; 

これは一回の更新で問題ありませんが、私はこのプロセスを自動化する必要があります。トリガとトリガ関数を使用してみましたが、外部テーブルでトリガを作成できましたが、新しい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(); 

私は誰がPostgreSQLの(9.6)の最新バージョンでこれを確認することができ、file_fdwがトリガ機能をサポートしていないフォーラムの投稿に読みますか?

外部テーブルまたは.csvファイルからテーブルを自動的に更新する方法を知っている人はいますか?あなたが外国人のテーブルの上にトリガをかけることができない

答えて

0

、しかし....

あなたは外国表のマテリアライズド・ビューを作成することができます。その後、マテリアライズド・ビューにトリガーを置くことができます。最後に、外部スケジューラにマテリアライズド・ビューを(データと同時に)リフレッシュさせることができます。これにより、トリガーが新しいデータを起動する必要があります。

関連する問題