名前付きパイプを使用する古いトリックがあります(Unixで動作し、Windowsについてはわかりません)
- 名前付きパイプを作成します:
mkfifo /tmp/omyfifo - ファイルの内容を書き込みます:
zcat mycsv.csv.z > /tmp/omyfifo & - [from psql]
copy mytable(col1,...) from '/tmp/omyfifo' - [終了時]:
rm /tmp/omyfifo
zcat バックグラウンドでは、リーダー(ここではCOPY)までブロックされます コマンド)が読み取りを開始し、EOFで終了します。 (またはリーダーがパイプを閉じた場合)
複数のパイプとzcatのペアを開始することもできます。これは、複数のCOPYによって取得されます。 SQLスクリプトのステートメント。
これはpgadminから機能しますが、fifo(+ zcatプロセス)はDBMSサーバーが実行されているマシンに存在する必要があります。
ところで:netcatを使用した同様のトリックを使用して、リモートマシンからファイルを読み取ることができます(もちろん、ファイルをネットワークソケットに書き込む必要があります)