0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PostgresqlのDBコピー/テーブルコピー方法

Posted at

PostgreSQLでデータベース・テーブルをコピーする方法まとめ

PostgreSQLを使っていて、以下のような場面でデータや構造をコピーしたいケースは多いと思います。

  • テーブルのバックアップを取りたい
  • テスト用DBを本番から複製したい
  • スキーマ間でデータを移動したい

本記事では、以下の2つのケースについて解説します。

  • ✅ データベース単位のコピー
  • ✅ テーブル単位のコピー(スキーマ間を含む)

1. コマンドプロンプトでファイルの移動

コピーの操作については、コマンドを実行します。そのさいに、PostgreSQLbinフォルダにパス(環境変数の設定)が通っている必要があります。
もし通っていない場合、cdコマンドでbinフォルダまで移動します。

cd C:\Program Files\PostgreSQL\16\bin

2. データベースのコピー方法(pg_dump → psql)

2-1. ダンプファイルを作成

🔧 基本構文

pg_dump -U <ユーザー名> -d <データベース名> -f "<出力先の絶対パス>\<ファイル名>.sql"

💡 使用例

pg_dump -U postgres -d testdb -f "C:\dump\testdb_dump.sql"

✅ ポイント

  • -U postgres: ユーザー名
  • -d testdb: コピー元のDB名
  • -f: 出力ファイル(フルパスで指定)
  • ⚠ 出力フォルダに書き込み権限があるかも確認。アクセス拒否エラーが出る場合は、ユーザーディレクトリ直下などの安全なパスを指定

2-2. 新しいデータベースを作成

🔧 CREAT文

createdb -U postgres testdbbk

2-3. ダンプを新しいDBにリストア

🔧 基本構文

psql -U <ユーザー名> -d <2-2.で作成したデータベース名> -f "<2-1.で出力したdumpファイルを格納している場所の絶対パス>"

💡 使用例

psql -U postgres -d testdbbk -f "C:\dump\testdb_dump.sql"

✅ ポイント

  • -U postgres: ユーザー名
  • -d testdb: コピー元のDB名
  • -f: 出力ファイル格納場所(フルパスで指定)

3. テーブルのコピー方法

3-1. テーブル定義・インデックス・制約込みで複製

🔧 CREATE文

CREATE TABLE <コピー先テーブル名> (LIKE public.<コピー元テーブル名> INCLUDING ALL);

💡 使用例

CREATE TABLE public.testtable_bk (LIKE public.testtable INCLUDING ALL);

✅ ポイント

  • INCLUDING ALLを使うと、カラム定義・デフォルト値・NOT NULL 制約・CHECK制約・インデックスなど全て含まれる

3-2. データをコピー

🔧 INSERT文

INSERT INTO <コピー先テーブル名> SELECT * FROM <コピー元テーブル名>;

💡 使用例

INSERT INTO public.testtable_bk SELECT * FROM public.testtable;

✅ まとめ

方法 内容
pg_dump + psql DBをまるごとバックアップ・リストアする
CREATE TABLE ... LIKE テーブル定義を丸ごとコピーする
INSERT INTO ... SELECT テーブルデータのみをコピーする
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?