BLOGサブスレッドの日常
2020.08.03
PostgreSQL \COPY を使ってデータの dump / restore
torikai
お久しぶりです。鳥飼です。よろしくお願いします。
PostgreSQLのデータをローカル開発環境に dump / restore したい時、どうしていますか?
大体はpg_dump
で dump して、よろしく restore する事が多いと思います。
psql
で \COPY
を使ってデータを dump / restore することもできますよ!
- スキーマの dump はできなかったり
- 全体のデータをまるごと dump できなかったり
…と、制約はありますが、pg_dump
以外を使う方法として覚えておくと、ふとした時に役に立つかもしれません。
例えば、PostgreSQL のクライアントとサーバーのバージョンが合わなくて、pg_dump
が使えない上に、クライアントとサーバーのバージョンを簡単に揃えられない事情がある場合などには有用かもしれません。
テーブルの内容をファイルにエクスポート
psql -h [ホスト名] -U [ユーザー名] -c "\COPY [テーブル名] to '[出力先のファイルパス]'" [データベース名]
出力先のファイルは psql
を実行しているマシン上の、アクセス可能なファイルのパスを指定します。
ファイルの内容をDBにインポート
psql -h [ホスト名] -U [ユーザー名] -c "\COPY [テーブル名] from '[入力元のファイルパス]'" [データベース名]
入力元のファイルは psql
を実行しているマシン上の、アクセス可能なファイルのパスを指定します。
ポイントとして、COPY
ではなく、\COPY
です。
COPY
の場合、データベースサーバマシン上のファイルに書き出されます。
参考: PostgreSQL 12.0文書 SQLコマンド COPY
ちょっとした豆知識でした。
この記事を書いた人
torikai