Postgresでテーブルの一部をcsvにエクスポート・インポート
$ psql -d DBNAME -c 'select * from TABLENAME order by KEY desc limit NUMBER;' -A -F, > result.csv
-d ・・・DBの名前
-c ・・・コマンド実行を指示
-A・・・位置揃えなしの出力モード
-F・・・フィールド区切り文字として','を使う
-h・・・ホスト名
-p・・・ポート
-U・・・ユーザー名
インポートはCOPYコマンドを使う
db=# \COPY TABLENAME from result.csv delimiters ',' null ''
*最後のセミコロンは不要。頭のバックスラッシュは一般ユーザーの時は必要
psqlコマンドではNULLを吐き出さないので、 null '' オプションを付ける
すでに指定したテーブルにデータが存在する場合は、追加になる。
psqlのそのほかのオプションの説明についてはこちら
http://www.postgresql.jp/document/pg824doc/html/app-psql.html
copy コマンドでテーブルを丸ごとcsvにエクスポートする場合は以下のようにする。この方がpsqlより速い。
db=> \copy TABLENAME to 'TABLENAME.csv' USING DELIMITERS ','
*最後のセミコロンは不要。頭のバックスラッシュは一般ユーザーの時は必要だが、スーパーユーザーの場合は不要
コメント