---
title: "PostgreSQL のダンプを別のバージョンへ"
description: "PostgreSQL 10 以降の pg_dump ファイルを PostgreSQL 13 から 18 で読み込めるスクリプトに変換。同じテーブル、キー、データで、すべての変更をレポートします。"
canonical: https://intosql.com/ja/postgresql-to-postgresql
last_updated: 2026-10-15
---

# PostgreSQL のダンプを別のバージョンへ

pg_dump または pg_dumpall のプレーンなダンプ (.sql または .sql.gz) をドロップすると、どのバージョンで書かれたダンプでも、PostgreSQL 13 から 18 で読み込めるスクリプトを 1 つダウンロードできます。IDENTITY、列挙型、配列、jsonb はそのまま残り、拡張機能の型はテキストになります。すべての変更はレポートに記載されます。

[PostgreSQL から PostgreSQL への移行ガイド](https://intosql.com/docs/migrations/postgresql-to-postgresql)

[PostgreSQL から PostgreSQL へのデータ型](https://intosql.com/docs/types/postgresql-to-postgresql)

## ファイルとスクリプトで変わること

各行はコンバーターが適用するルールです。ルールによってデータが変わったときにレポートに書かれる行も示します。

| ファイルでは | スクリプトでは | レポートの行 |
| --- | --- | --- |
| varchar(n), char(n), text | 同じ型 |  |
| numeric(p,s), numeric without a precision, NaN and Infinity | 同じ型と値 |  |
| money | numeric(19,2) | `type_replaced` |
| enum types | 同じ enum 型、テーブルより前に作成 |  |
| enum columns holding values outside their labels | チェックなしの text | `enum_check_skipped` |
| composite and range types the dump defines, extension types (citext, hstore, ltree, PostGIS) and multiranges | PostgreSQL のテキストを持つ text | `type_replaced` |
| citext | 厳密に比較する text | `case_insensitive_collation` |
| json, jsonb | 同じ型 |  |
| timestamp with time zone | timestamptz、同じ時点 |  |
| time, time with time zone | 同じ型 |  |
| infinity, -infinity and BC dates | 保持 |  |
| NaN and Infinity in numeric, real and double precision | 保持 |  |
| generated columns | 同じ生成列 |  |
| generated columns with functions IntoSQL doesn't write | 値を持つ普通の列 | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write | デフォルト値なし | `default_not_translated` |
| CHECK constraints with functions IntoSQL doesn't write | 作成しない | `check_skipped` |
| CHECK ... NOT VALID | 行の後に NOT VALID で追加 |  |
| gin, gist, brin and hash indexes, partial and expression indexes | 作成しない | `index_skipped` |
| foreign keys to tables the dump doesn't create | 作成しない | `foreign_key_skipped` |
| NOT NULL columns with values that become NULL | NOT NULL を削除 | `not_null_relaxed` |
| partitioned tables | すべてのパーティションの行を持つ 1 つのテーブル | `partitions_dropped` |
| views, functions, procedures, triggers, rules, policies, extensions and types other than enums | レポートに記載 | `not_converted_objects` |
| dumps without CREATE TABLE (--data-only) | 値から読み取った型 | `no_schema` |
| expressions in INSERT values | NULL | `expression_value` |
| types IntoSQL doesn't know | text | `unknown_type` |
| text that isn't valid in its encoding | 不正なバイトを置換文字に | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | そのままコピー | `mojibake_suspected` |

## スクリプトを PostgreSQL に読み込む

スクリプトはテーブルを作成して行をコピーしてから、キー、インデックス、外部キーを追加します。そのため読み込みが速く、最初のエラーで止まります。

```shell
psql -v ON_ERROR_STOP=1 -d mydb -f postgresql.postgresql.sql
```

外部キーは NOT VALID で追加してから検証します。存在しない行を参照している行があれば、途中で失敗する代わりに、どの制約かをスクリプトが示します。

大きなダンプでは、先にデータベースを作成し、サーバーと同じマシンから psql でスクリプトを実行してください。

IntoSQL Pro なら、デスクトップアプリやコマンドラインからファイルを PostgreSQL に直接読み込めます。スクリプトを書き出す必要はありません。

## PostgreSQL を最適な方法でダンプする

コンバーターはダンプの内容を読み取ります。次のオプションを使うと、より多くのデータがダンプに残ります。

- pg_dump のデフォルトである --format=plain は SQL を書き出します。custom または directory 形式のアーカイブ (-Fc, -Fd) は、pg_restore -f dump.sql でデータベースサーバーなしに SQL にできます。
- --no-owner --no-privileges を使うと、コンバーターがどのみちスキップするロールと権限付与が除かれ、ダンプが小さくなります。
- pg_dumpall はすべてのデータベースを 1 つのファイルにダンプします。各テーブルにはデータベース名を付けるため、名前は衝突しません。

## 変換されないもの

ビュー、トリガー、プロシージャ、関数など PostgreSQL 独自の言語で書かれたオブジェクトは、黙って削除されることなくレポートに名前で記載されます。読み込む先の PostgreSQL のバージョンで確認してから作り直せます。

## PostgreSQL のバージョン間の移行に関する質問

### ダンプはアップロードされますか？

いいえ。コンバーターはブラウザ上で動作し、ダンプをディスクから少しずつ読み込むため、ダンプがコンピューターの外に出ることはありません。デスクトップアプリとコマンドラインも、お使いのコンピューター上で変換します。

### ダンプはどのくらいの大きさまで扱えますか？

コンバーターはダンプ全体をメモリに保持しません。ファイルを範囲ごとに 2 回読み、読みながらスクリプトを書き出します。数 GB のダンプも、ブラウザ、デスクトップアプリ、コマンドラインで変換できます。

### pg_dump -Fc のアーカイブを読めますか？

直接は読めません。custom 形式のアーカイブはバイナリ形式です。pg_restore -f dump.sql dump.backup を使えば、サーバーに接続せずにコンバーターが読めるプレーンな SQL にできます。アーカイブを受け取るとコンバーターがその旨を表示します。

### どの PostgreSQL バージョンのダンプに対応していますか？

PostgreSQL 10 以降の pg_dump と pg_dumpall で作成した、COPY または INSERT の行を含むダンプです。すべてのテスト用ダンプは PostgreSQL 13 と 18 で作成し、ソースとセル単位で比較しています。

### serial と identity の値は保持されますか？

はい。serial と identity の列は IDENTITY 列のままで、すべての行が ID を保ち、各カウンターはダンプのシーケンスが到達していた値から続きます。

### 配列、enum など PostgreSQL の型はどうなりますか？

money を除き、配列、範囲型、json と jsonb、ビット列はそのままです。enum 型はラベルごと作り直します。拡張機能の型 (citext, hstore, PostGIS) と複合型は text になり、対象の列はレポートに記載されます。

### 関数、トリガー、ビューはどうなりますか？

変換はせず、レポートに名前で一覧するので、テーブルを読み込んだ後に作り直せます。NOT VALID のチェックは行の後に、未検証のまま追加します。

### スクリプトはどの PostgreSQL バージョンで読み込めますか？

ダンプを書き出したバージョンにかかわらず、PostgreSQL 13 から 18 です。どのバージョンでも同じスクリプトを読み込め、問題があれば最初のエラーで止まります。

## PostgreSQL から

- [PostgreSQL から MySQL へ](https://intosql.com/ja/postgresql-to-mysql)
- [PostgreSQL から MariaDB へ](https://intosql.com/ja/postgresql-to-mariadb)
- [PostgreSQL から SQLite へ](https://intosql.com/ja/postgresql-to-sqlite)
- [PostgreSQL から SQL Server へ](https://intosql.com/ja/postgresql-to-sql-server)
- [PostgreSQL から Oracle へ](https://intosql.com/ja/postgresql-to-oracle)

## PostgreSQL へ

- [MySQL から PostgreSQL へ](https://intosql.com/ja/mysql-to-postgresql)
- [MariaDB から PostgreSQL へ](https://intosql.com/ja/mariadb-to-postgresql)
- [SQL Server から PostgreSQL へ](https://intosql.com/ja/sql-server-to-postgresql)
- [SQLite から PostgreSQL へ](https://intosql.com/ja/sqlite-to-postgresql)
- [Oracle から PostgreSQL へ](https://intosql.com/ja/oracle-to-postgresql)

## ガイドとすべての組み合わせ

- [PostgreSQL から PostgreSQL への移行ガイド](https://intosql.com/docs/migrations/postgresql-to-postgresql)
- [PostgreSQL から PostgreSQL へのデータ型](https://intosql.com/docs/types/postgresql-to-postgresql)
- [すべてのデータベースの組み合わせ](https://intosql.com/ja/database-migration)
