2

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

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

これまでのところ、2 つの方法を使用して csv からテーブル 'test1' にデータをインポートできます。

  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;

これは 1 回の更新では問題ありませんが、このプロセスを自動化する必要があります。トリガとトリガ関数を使用してみましたが、外部テーブルにトリガを作成できましたが、新しい 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 ファイルから直接テーブルを自動的に更新する方法を知っている人はいますか?

4

1 に答える 1

0

外部テーブルにトリガーを設定することはできませんが....

外部テーブルのマテリアライズド ビューを作成できます。その後、マテリアライズド ビューにトリガーを設定できます。最後に、外部スケジューラで具体化されたビューを (データと同時に) 更新することができます。これにより、新しいデータでトリガーが起動するはずです。

于 2016-11-13T18:04:14.433 に答える