---
title: "Pindahkan database SQLite ke versi lain"
description: "Konversi file .db SQLite atau dump-nya menjadi skrip yang dimuat di SQLite 3.31 dan yang lebih baru, dengan tabel, kunci, dan data yang sama, plus laporan perubahan."
canonical: https://intosql.com/id/sqlite-ke-sqlite
last_updated: 2026-10-15
---

# Pindahkan database SQLite ke versi lain

Letakkan file database SQLite (.db, .sqlite, .sqlite3) atau SQL yang ditulis .dump di sqlite3, lalu unduh skrip yang dimuat di SQLite 3.31 dan yang lebih baru. Setiap kolom mempertahankan tipe dan collation yang dideklarasikan, STRICT dihilangkan agar versi lama menerima tabelnya, dan setiap perubahan dicantumkan di laporan.

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

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

## 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 |
| --- | --- | --- |
| declared types (any text: VARCHAR(255), DATETIME, BOOLEAN, JSON or none) | tipe yang memuat setiap nilai di kolom |  |
| BOOLEAN, BOOL | INTEGER 0 atau 1 dengan CHECK |  |
| TEXT, VARCHAR(n), CHAR(n), CLOB | tipe yang dideklarasikan, dipertahankan apa adanya |  |
| DECIMAL(p,s), NUMERIC | tipe eksak jika setiap nilai muat di dalamnya, selain itu double |  |
| BLOB, and columns holding bytes | BLOB |  |
| DATE, DATETIME, TIMESTAMP holding ISO 8601 text | DATE, DATETIME sebagai teks ISO 8601 |  |
| JSON holding JSON text | TEXT |  |
| Infinity in REAL columns | 9e999, infinity milik SQLite |  |
| INTEGER PRIMARY KEY, AUTOINCREMENT | INTEGER PRIMARY KEY, AUTOINCREMENT dipertahankan |  |
| COLLATE NOCASE | COLLATE NOCASE |  |
| generated columns | kolom generated, STORED atau VIRTUAL seperti di sumber |  |
| generated columns with functions IntoSQL doesn't write, and the || operator | kolom biasa | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write (strftime, randomblob) | tanpa default | `default_not_translated` |
| CHECK constraints | diterjemahkan |  |
| CHECK constraints with functions IntoSQL doesn't write | tidak dibuat | `check_skipped` |
| partial and expression indexes | tidak dibuat | `index_skipped` |
| foreign keys (unenforced unless PRAGMA foreign_keys=ON) | foreign key yang sama, dicantumkan oleh PRAGMA foreign_key_check |  |
| foreign keys to tables the dump doesn't create | tidak dibuat | `foreign_key_skipped` |
| primary keys holding NULL, and NOT NULL columns with values that become NULL | NOT NULL dihapus | `not_null_relaxed` |
| views, triggers and virtual tables (FTS, R*Tree) | dicantumkan di laporan | `not_converted_objects` |
| dumps without CREATE TABLE (--data-only) | tipe dibaca dari nilai | `no_schema` |
| expressions in INSERT values other than the text functions dumps write | NULL | `expression_value` |
| NUL characters in text | dipertahankan |  |
| text that isn't valid UTF-8 | byte yang rusak menjadi karakter pengganti | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | disalin apa adanya | `mojibake_suspected` |

## Muat skrip ke SQLite

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

```shell
sqlite3 -bail mydb.sqlite < sqlite.sqlite.sql
```

Foreign key dideklarasikan di setiap tabel dan baris dimuat dengan pemeriksaan foreign key nonaktif. Lalu skrip mencantumkan setiap baris yang merujuk ke baris yang tidak ada, bukan gagal di tengah jalan.

Untuk dump yang besar, muat ke file baru di disk lokal. Skrip memuat semuanya dalam satu transaksi dengan sinkronisasi nonaktif, jadi berjalan secepat disk, dan pemuatan yang berhenti di tengah jalan tidak meninggalkan tabel setengah jadi.

Command line memuat file langsung ke database SQLite, tanpa menulis skrip. Gratis.

## Buat dump SQLite untuk hasil terbaik

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

- File database itu sendiri dikonversi apa adanya, dibaca halaman demi halaman di browser Anda. Tutup dulu aplikasi yang menulis ke file itu, agar tidak ada perubahan yang tertinggal di file -wal-nya.
- sqlite3 app.db .dump > app.sql menulis database yang sama sebagai SQL, yang juga bisa dikonversi, sebagai .sql atau .sql.gz.
- DB Browser for SQLite menulis SQL itu lewat File, Export, Database to SQL file, begitu juga iterdump() di Python.

## Yang tidak dikonversi

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

## Pertanyaan tentang memindahkan SQLite 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.

### Bisakah saya mengonversi file .db secara langsung?

Ya. Letakkan file .db, .sqlite, atau .sqlite3: file dibaca di browser Anda dan tidak pernah diunggah. Teks dengan karakter NUL dan setiap digit nilai double tiba persis seperti tersimpan, sesuatu yang bisa terpotong oleh .dump.

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

File database dari SQLite 3.0 ke atas, dalam UTF-8 atau UTF-16, serta dump dari .dump di shell sqlite3 atau dari iterdump() di Python. Setiap file dan dump uji berasal dari sqlite3 3.31 sampai 3.54, termasuk tabel STRICT dan WITHOUT ROWID, dan dibandingkan dengan sumbernya sel demi sel.

### Bagaimana tipe kolom ditentukan jika SQLite tidak menerapkannya?

Setiap kolom mempertahankan tipe yang dideklarasikan, begitu juga COLLATE NOCASE dan RTRIM. STRICT tidak disertakan, sehingga skrip dimuat di setiap versi sejak 3.31.

### Apakah INTEGER PRIMARY KEY dan AUTOINCREMENT dipertahankan?

Ya. INTEGER PRIMARY KEY dan AUTOINCREMENT tetap apa adanya, dan sqlite_sequence berlanjut dari posisi terakhir di dump.

### Bagaimana dengan view dan trigger?

Semuanya dicantumkan di laporan berdasarkan nama dan tidak dikonversi, sehingga Anda bisa membuatnya ulang setelah tabel dimuat.

### Di versi SQLite mana skrip bisa dimuat?

SQLite 3.31 dan yang lebih baru. Setiap file dan dump uji dimuat di 3.31 dan 3.54, dan berhenti di galat pertama jika ada yang salah.

## Dari SQLite

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

## Ke SQLite

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

## Panduan dan setiap pasangan

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