データのエクスポートとインポート
PostgreSQL におけるデータのエクスポートとインポートについてです。 PostgreSQL に蓄積されたデータを csv ファイルとして出力する、取り込むといったことができます。
ここでは、psql コマンドプロントで \COPY コマンドを使います。
\COPY コマンドは、PostgreSQL データベースのテーブルレコードの出力と取り込みを行います。
ページ内 Index
- ad -
データのエクスポート
COPY { table_name [ ( column_name [, ...] ) ] | ( query ) } TO { 'filename' | PROGRAM 'command' | STDOUT } [ [ WITH ] ( option [, ...] ) ]
表計算用のCSVファイルとして出力することを前提にしています。以下の条件でCSV出力します。 ここでは、ユーザー制約を回避するために/copyメタコマンドを使用しています。
- レコードの先頭にカラム名を付加
- NULL値以外は引用符で囲む
- NULL値は空文字化
以下の例の'file_name'にファイルパスを含みます。table_nameはテーブル名、'file_name'はファイル名として読みかえて下さい。 データの区切り文字はCSVではデフォルトでカンマ「,」になります。
=> \COPY table_name TO 'file_name' WITH CSV HEADER FORCE QUOTE * NULL AS '';
指定したオプションは以下のような機能があります。
HEADER | レコードの先頭にカラム名を加える。 |
FORCE QUOTE * | 非NULL値は強制的に全て引用符で囲む。CSVで\COPY TOのときのみ機能。 |
NULL AS '' | NULL値は空文字に置き換える |
CSVファイルを出力するだけでしたら以下のようになります。
=> \COPY table_name TO 'file_name' WITH CSV;
データのインポート
COPY table_name [ ( column_name [, ...] ) ] FROM { 'filename' | PROGRAM 'command' | STDIN } [ [ WITH ] ( option [, ...] ) ]
以下の条件の CSV ファイルを取り込みます。ここでは、ユーザー制約を回避するために /copy メタコマンドで使用しています。
注意点として、テーブルに取り込むレコードが追加されます。取り込むテーブルに何もデータが無い状態か、追加してもよい状態である必要があります。
- レコードの先頭にカラム名がある
- NULL値は空文字
=> \COPY table_name FROM 'file_name' WITH CSV HEADER NULL AS '';
指定したオプションは以下のような機能があります。
HEADER | レコードの先頭はカラム名のレコード |
NULL AS '' | NULL値は空文字になっている |
CSVファイルの編集
もし、CSV ファイルから必要なカラムだけを抽出したい場合は、CSV ファイルを編集しなければなりません。
CSV ファイルの編集方法は「 CSV ファイルの編集」を参考にしてみて下さい。