名前付きパイプを使用する古いトリックがあります(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を使用した同様のトリックを使用して、リモートマシンからファイルを読み取ることができます(もちろん、ファイルをネットワークソケットに書き込む必要があります)