copy from コマンドを使う際、与えられるテキストデータファイルのデータが、あるべきフィールドの順番やフィールドの数が合わない場合があります。そうするとcopy from コマンドをそのまま使うことができません。
そういう時どうすればよいか、例示してみます。データファイルは、カンマ「,」で区切られているとします。まず次のようなファイルを作ります。
1行目——-> COPY sitename (stid,stname,stdiv) FROM STDIN DELIMITER AS ‘,’ ;
2行目から—> ここにデータファイルの内容を置きます。
例えば 10001,サイト名前,1 といったデータです。
最終行——>\.
このファイル名をdata.txtとします。
cat data.txt | psql データベース名
これで、データが挿入されます。これだとフィールド指定もできるので柔軟に対応できます。
この方法は、バックアップに用いられているpg_dump内で用いられている手法を活用したものです。