---
title: "Pindahkan dump PostgreSQL ke versi lain"
description: "Konversi file pg_dump dari PostgreSQL 10 atau yang lebih baru menjadi skrip yang dimuat di PostgreSQL 13 sampai 18, dengan tabel, kunci, dan data yang sama, plus laporan."
canonical: https://intosql.com/id/postgresql-ke-postgresql
last_updated: 2026-10-15
---

# Pindahkan dump PostgreSQL ke versi lain

Letakkan dump biasa dari pg_dump atau pg_dumpall, sebagai .sql atau .sql.gz, lalu unduh satu skrip yang dimuat di PostgreSQL 13 sampai 18, versi mana pun yang menulis dump-nya. Identity, enum, array, dan jsonb tetap apa adanya, tipe dari ekstensi menjadi text, dan setiap perubahan dicantumkan di laporan.

[Panduan migrasi PostgreSQL ke PostgreSQL](https://intosql.com/docs/migrations/postgresql-to-postgresql)

[Tipe data PostgreSQL ke PostgreSQL](https://intosql.com/docs/types/postgresql-to-postgresql)

## Apa yang berubah antara file dan skrip

Setiap baris adalah aturan yang diterapkan konverter, beserta baris laporan yang ditulisnya saat aturan itu mengubah sesuatu di data Anda.

| Di file | Di skrip | Baris laporan |
| --- | --- | --- |
| varchar(n), char(n), text | tipe yang sama |  |
| numeric(p,s), numeric without a precision, NaN and Infinity | tipe dan nilai yang sama |  |
| money | numeric(19,2) | `type_replaced` |
| enum types | tipe enum yang sama, dibuat sebelum tabel |  |
| enum columns holding values outside their labels | text tanpa CHECK | `enum_check_skipped` |
| composite and range types the dump defines, extension types (citext, hstore, ltree, PostGIS) and multiranges | text berisi teks PostgreSQL | `type_replaced` |
| citext | text, dibandingkan secara persis | `case_insensitive_collation` |
| json, jsonb | tipe yang sama |  |
| timestamp with time zone | timestamptz, momen yang sama |  |
| time, time with time zone | tipe yang sama |  |
| infinity, -infinity and BC dates | dipertahankan |  |
| NaN and Infinity in numeric, real and double precision | dipertahankan |  |
| generated columns | kolom generated yang sama |  |
| generated columns with functions IntoSQL doesn't write | kolom biasa berisi nilainya | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write | tanpa default | `default_not_translated` |
| CHECK constraints with functions IntoSQL doesn't write | tidak dibuat | `check_skipped` |
| CHECK ... NOT VALID | ditambahkan NOT VALID setelah baris |  |
| gin, gist, brin and hash indexes, partial and expression indexes | tidak dibuat | `index_skipped` |
| foreign keys to tables the dump doesn't create | tidak dibuat | `foreign_key_skipped` |
| NOT NULL columns with values that become NULL | NOT NULL dihapus | `not_null_relaxed` |
| partitioned tables | satu tabel dengan baris dari setiap partisi | `partitions_dropped` |
| views, functions, procedures, triggers, rules, policies, extensions and types other than enums | dicantumkan di laporan | `not_converted_objects` |
| dumps without CREATE TABLE (--data-only) | tipe dibaca dari nilainya | `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 | byte yang rusak menjadi karakter pengganti | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | disalin apa adanya | `mojibake_suspected` |

## Muat skrip ke PostgreSQL

Skrip membuat tabel, menyalin baris, lalu menambahkan kunci, indeks, dan foreign key, jadi pemuatan berjalan cepat dan berhenti di galat pertama.

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

Foreign key ditambahkan sebagai NOT VALID lalu divalidasi. Jika sebuah baris merujuk ke baris yang tidak ada, skrip memberi tahu constraint mana, bukan gagal di tengah jalan.

Untuk dump yang besar, buat database terlebih dahulu dan jalankan skrip dengan psql dari mesin yang sama dengan server.

IntoSQL Pro memuat file langsung ke PostgreSQL dari aplikasi desktop atau command line, tanpa menulis skrip.

## Buat dump PostgreSQL untuk hasil terbaik

Konverter membaca apa yang ada di dump. Opsi berikut membuat lebih banyak data Anda tetap ada di dalamnya:

- --format=plain, default pg_dump, menulis SQL. Arsip custom atau directory (-Fc, -Fd) menjadi SQL dengan pg_restore -f dump.sql, tanpa server database.
- --no-owner --no-privileges menghilangkan role dan grant, yang memang dilewati konverter, jadi dump lebih kecil.
- pg_dumpall menyimpan setiap database dalam satu file; tabel masing-masing diberi nama sesuai database-nya, jadi tidak ada yang bentrok.

## Yang tidak dikonversi

View, trigger, procedure, fungsi, dan objek lain yang ditulis dalam bahasa PostgreSQL sendiri dicantumkan di laporan berdasarkan nama, tidak pernah dibuang diam-diam, jadi Anda bisa memeriksa masing-masing dengan versi PostgreSQL tujuan pemuatan sebelum membuatnya ulang.

## Pertanyaan tentang memindahkan PostgreSQL antarversi

### Apakah dump saya diunggah?

Tidak. Konverter berjalan di browser Anda dan membaca dump dari disk Anda sepotong demi sepotong, jadi dump tidak pernah meninggalkan komputer Anda. Aplikasi desktop dan command line juga mengonversi di komputer Anda.

### Seberapa besar dump yang bisa dipakai?

Konverter tidak pernah menyimpan seluruh dump di memori: file dibaca dua kali, per rentang, dan skrip ditulis sambil berjalan. Dump berukuran beberapa gigabyte bisa dikonversi di browser, di aplikasi desktop, dan dengan command line.

### Apakah arsip pg_dump -Fc bisa dibaca?

Tidak langsung: arsip custom adalah format biner. pg_restore -f dump.sql dump.backup mengubahnya menjadi SQL plain yang dibaca konverter, tanpa terhubung ke server. Konverter memberi tahu saat menerima arsip.

### Dump dari versi PostgreSQL mana yang bisa dipakai?

Dump yang ditulis pg_dump dan pg_dumpall dari PostgreSQL 10 ke atas, dengan baris COPY atau INSERT. Setiap dump uji berasal dari PostgreSQL 13 dan 18 dan dibandingkan dengan sumbernya sel demi sel.

### Apakah nilai serial dan identity dipertahankan?

Ya. Kolom serial dan identity tetap menjadi kolom identity, setiap baris mempertahankan id-nya, dan setiap penghitung berlanjut dari nilai yang sudah dicapai sequence di dump.

### Apa yang terjadi pada array, enum, dan tipe PostgreSQL lainnya?

Tetap apa adanya: array, range, json dan jsonb, string bit, kecuali money. Tipe enum dibuat ulang dengan labelnya. Tipe dari ekstensi (citext, hstore, PostGIS) dan tipe komposit menjadi text, dan laporan menyebutkan kolomnya.

### Bagaimana dengan fungsi, trigger, dan view?

Semuanya dicantumkan di laporan berdasarkan nama dan tidak dikonversi, jadi Anda bisa membuatnya ulang setelah tabel masuk. CHECK NOT VALID ditambahkan setelah baris, tetap tidak valid.

### Di versi PostgreSQL mana skrip bisa dimuat?

PostgreSQL 13 sampai 18, versi mana pun yang menulis dump. Skrip yang sama dimuat di setiap versi itu, dan berhenti di galat pertama jika ada yang salah.

## Dari PostgreSQL

- [PostgreSQL ke MySQL](https://intosql.com/id/postgresql-ke-mysql)
- [PostgreSQL ke MariaDB](https://intosql.com/id/postgresql-ke-mariadb)
- [PostgreSQL ke SQLite](https://intosql.com/id/postgresql-ke-sqlite)
- [PostgreSQL ke SQL Server](https://intosql.com/id/postgresql-ke-sql-server)
- [PostgreSQL ke Oracle](https://intosql.com/id/postgresql-ke-oracle)

## Ke PostgreSQL

- [MySQL ke PostgreSQL](https://intosql.com/id/mysql-ke-postgresql)
- [MariaDB ke PostgreSQL](https://intosql.com/id/mariadb-ke-postgresql)
- [SQL Server ke PostgreSQL](https://intosql.com/id/sql-server-ke-postgresql)
- [SQLite ke PostgreSQL](https://intosql.com/id/sqlite-ke-postgresql)
- [Oracle ke PostgreSQL](https://intosql.com/id/oracle-ke-postgresql)

## Panduan dan setiap pasangan

- [Panduan migrasi PostgreSQL ke PostgreSQL](https://intosql.com/docs/migrations/postgresql-to-postgresql)
- [Tipe data PostgreSQL ke PostgreSQL](https://intosql.com/docs/types/postgresql-to-postgresql)
- [Setiap pasangan database](https://intosql.com/id/migrasi-database)
