Langsung ke konten
Beranda IntoSQL

Konversi PostgreSQL ke SQLite

Letakkan dump plain dari pg_dump atau pg_dumpall, sebagai .sql atau .sql.gz, lalu unduh skrip SQLite dengan tabel, kunci, indeks, dan data yang sama. Setiap nilai yang tidak bisa disimpan SQLite apa adanya, dan setiap objek yang tidak didukungnya, dicantumkan di laporan.

File Anda
sqlshop_2024_postgres.sqlFile contoh, 6,2 kB
Database Anda

18 baris dikonversi, 3 perbaikan, tidak ada yang ditolak

Tampilkan

Tabel di shop_2024_postgres.sqlDump PostgreSQL 18.6 · ditulis oleh pg_dump · utf8mb4

  • customers8 baris2
    8 kolom
    idINTEGER not null
    nameTEXT not null
    emailTEXT not null
    countryVARCHAR(2) not null
    is_activeINTEGER not null
    tagsTEXT not null
    signed_upDATE
    created_atTIMESTAMP not null
  • orders10 baris1
    10 kolom
    idINTEGER not null
    customer_idINTEGER not null
    statusTEXT not null
    totalDECIMAL(10,2) not null
    itemsINTEGER not null
    ordered_atDATETIME not null
    shipped_atDATETIME
    noteTEXT
    detailsTEXT
    deliveryTEXT

Tidak dikonversi

  • View paid_orders

Setiap database menulis objek ini dalam bahasanya sendiri. Tulis ulang untuk SQLite.

-- Written by IntoSQL from a PostgreSQL dump. Load it with: sqlite3 -bail <database> < <file>
PRAGMA foreign_keys = OFF;
PRAGMA synchronous = OFF;
BEGIN;

CREATE TABLE customers ( -- People who bought at least once
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    email TEXT NOT NULL,
    country VARCHAR(2) DEFAULT 'US' NOT NULL,
    is_active INTEGER DEFAULT 1 NOT NULL,
    tags TEXT NOT NULL,
    signed_up DATE,
    created_at TIMESTAMP DEFAULT (strftime('%Y-%m-%d %H:%M:%f', 'now')) NOT NULL,
    CONSTRAINT customers_is_active_check CHECK (is_active IN (0, 1))
);

CREATE TABLE orders (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    customer_id INTEGER NOT NULL,
    status TEXT DEFAULT 'pending' NOT NULL,
    total DECIMAL(10,2) NOT NULL,
    items INTEGER DEFAULT 1 NOT NULL,
    ordered_at DATETIME NOT NULL,
    shipped_at DATETIME,
    note TEXT,
    details TEXT,
    delivery TEXT,
    CONSTRAINT orders_status_check CHECK (status IN ('pending', 'paid', 'shipped', 'cancelled')),
    CONSTRAINT orders_orders_total_check CHECK (total >= (0)),
    CONSTRAINT orders_customer_id_fkey FOREIGN KEY (customer_id) REFERENCES customers (id)
);

INSERT INTO customers (id, name, email, country, is_active, tags, signed_up, created_at) VALUES
(1,'Ana Martínez','ana@example.com','MX',1,'["vip"]','2023-01-15','2023-01-15 10:24:00'),
(2,'Zoë Müller','zoe@example.de','DE',1,'[]','2023-02-03','2023-02-03 08:11:42'),
(3,'José Peña','jose@example.es','ES',0,'["wholesale","late payer"]','2023-03-21','2023-03-21 19:05:17'),
(4,'李雷','lilei@example.cn','CN',1,'[]','2023-05-09','2023-05-09 02:40:00'),
(5,'Noah O''Brien','noah@example.ie','IE',1,'[]',NULL,'2023-06-30 14:00:00'),
(6,'Amélie Laurent','amelie@example.fr','FR',1,'["vip"]','2024-01-02','2024-01-02 09:30:00'),
(7,'Ravi Patel','ravi@example.in','IN',0,'[]','2024-02-29','2024-02-29 23:59:59'),
(8,'Sofia Rossi 🌻','sofia@example.it','IT',1,'[]','2024-04-12','2024-04-12 12:12:12');
INSERT INTO orders (id, customer_id, status, total, items, ordered_at, shipped_at, note, details, delivery) VALUES
(1,1,'shipped',129.90,3,'2024-03-01 10:00:00','2024-03-02 16:30:00',NULL,'{"gift": false}','1 day 06:30:00'),
(2,2,'paid',54.00,1,'2024-03-02 11:15:00',NULL,'Gift wrap 🎁','{"gift": true, "wrap": "red"}',NULL),
(3,1,'cancelled',12.50,1,'2024-03-03 09:45:00',NULL,'Customer changed their mind',NULL,NULL),
(4,4,'shipped',980.00,12,'2024-03-05 02:10:00','2024-03-07 08:00:00','请小心轻放','{"fragile": true}','2 days 05:50:00'),
(5,5,'pending',45.75,2,'2024-03-08 17:20:00',NULL,'Leave at the door; ring twice',NULL,NULL),
(6,6,'shipped',310.40,5,'2024-03-10 13:00:00','2024-03-11 09:00:00','Fragile: "glass"','{"fragile": true}','20:00:00'),
(7,8,'paid',76.20,2,'2024-03-11 18:45:00',NULL,NULL,NULL,NULL),
(8,2,'shipped',19.99,1,'2024-03-12 08:00:00',NULL,'Shipped date set to infinity by an old import',NULL,NULL),
(9,3,'shipped',64.00,2,'2024-03-14 15:30:00','2024-03-15 10:00:00','Two parcels','{"parcels": [1, 2]}','18:30:00'),
(10,7,'paid',1499.00,1,'2024-03-15 21:05:00',NULL,'C:\Users\ravi\invoice.pdf',NULL,NULL);

-- Indexes, triggers and counters, after the rows so each index builds once.
CREATE UNIQUE INDEX customers_customers_email_key ON customers (email);
CREATE INDEX orders_idx_orders_customer ON orders (customer_id);
CREATE INDEX orders_idx_orders_status_date ON orders (status, ordered_at);
UPDATE sqlite_sequence SET seq = max(seq, 1000) WHERE name = 'customers';
INSERT INTO sqlite_sequence (name, seq) SELECT 'customers', 1000 WHERE NOT EXISTS (SELECT 1 FROM sqlite_sequence WHERE name = 'customers');
UPDATE sqlite_sequence SET seq = max(seq, 5000) WHERE name = 'orders';
INSERT INTO sqlite_sequence (name, seq) SELECT 'orders', 5000 WHERE NOT EXISTS (SELECT 1 FROM sqlite_sequence WHERE name = 'orders');
COMMIT;

-- Rows whose foreign key finds no parent, if any: the load doesn't stop for them.
PRAGMA foreign_key_check;

Perbaikan

  1. "created_at" dari customers berisi momen dengan zona waktu; SQLite tidak punya tipe yang menyimpannya, jadi momen itu disimpan dalam UTC sebagai TIMESTAMP.
  2. "tags" di customers adalah text[], yang tidak ada di SQLite, jadi menjadi TEXT dengan nilai yang sama.
  3. "delivery" di orders adalah interval, yang tidak ada di SQLite, jadi menjadi TEXT dengan nilai yang sama.

Perlu diperiksa

  • 1 view, trigger, rutin, atau event tidak dikonversi; laporan mencantumkan masing-masing. Buat ulang secara manual di SQLite.
  • Default "tags" di customers tidak bisa ditulis untuk SQLite (a value its type can't hold), jadi kolom itu tanpa default. Tambahkan default secara manual jika baris baru memerlukannya.
  • Indeks idx_orders_details pada orders memakai ekspresi yang tidak bisa ditulis untuk SQLite (a gin index), jadi tidak dibuat. Buat indeks secara manual jika kueri memerlukannya.
  • 1 nilai di "shipped_at" dari orders adalah tanggal yang tidak bisa disimpan SQLite, misalnya infinity, jadi menjadi NULL. SQLite menyimpan tahun 1 sampai 9999 tanpa infinity; ganti tanggal itu di sumber jika penting.

File Anda dikonversi di komputer ini dan tidak pernah diunggah.

Contoh lain:

Yang berubah dari PostgreSQL ke SQLite

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

  • boolean

    INTEGER 0 atau 1 dengan CHECK

    SQLite tidak punya tipe boolean; true dan false miliknya adalah 1 dan 0.

  • varchar(n), char(n), text

    VARCHAR(n) dan TEXT, tidak diterapkan

    SQLite menyimpan tipe yang dideklarasikan untuk dibaca alat, tetapi tidak membatasi panjangnya.

  • numeric(p,s) past 15 digits and numeric without a precision

    TEXT

    SQLite menyimpan sekitar 15 digit signifikan dalam angka. Angka yang lebih lebar disimpan sebagai teks agar setiap digit tetap persis.

    Baris laporan: decimal_as_text

  • money

    NUMERIC

    SQLite tidak punya tipe money. Jumlahnya disimpan sebagai angka, tanpa simbol mata uang yang ditambahkan locale server.

    Baris laporan: type_replaced

  • interval

    TEXT berisi teks PostgreSQL

    SQLite tidak punya tipe interval; teksnya mempertahankan setiap bagian.

    Baris laporan: type_replaced

  • arrays (integer[], text[]...)

    TEXT berisi array JSON

    SQLite tidak punya array. Array JSON mempertahankan setiap elemen dan NULL, dan fungsi JSON SQLite membacanya.

    Baris laporan: type_replaced

  • ranges, geometric types, tsvector, xml, hstore, PostGIS, composite and extension types

    TEXT berisi teks PostgreSQL

    SQLite tidak punya tipe yang setara, jadi setiap nilai mempertahankan teks yang ditulis PostgreSQL.

    Baris laporan: type_replaced

  • json, jsonb

    TEXT

    Fungsi JSON SQLite membaca JSON dari teks.

  • timestamp

    DATETIME sebagai teks ISO 8601

    SQLite menyimpan tanggal sebagai teks yang dibaca fungsi tanggalnya.

  • timestamp with time zone

    TIMESTAMP sebagai teks ISO 8601 dalam UTC

    SQLite tidak punya tipe yang menyimpan selisih waktu, jadi setiap momen ditulis dalam UTC: momen yang sama apa pun selisih yang ditulis dump.

    Baris laporan: moments_as_utc

  • time

    TIME sebagai teks

    SQLite menyimpan jam sebagai teks, termasuk 24:00:00.

  • infinity, -infinity and BC dates

    NULL

    Fungsi tanggal SQLite membaca tahun 0 sampai 9999 tanpa infinity. Nilai itu menjadi NULL dan laporan menghitungnya.

    Baris laporan: date_out_of_range

  • NaN and Infinity in numeric, real and double precision

    NULL

    SQLite menyimpan NaN sebagai NULL dan infinity-nya tidak bertahan di setiap alat, jadi nilai itu menjadi NULL dan laporan menghitungnya.

    Baris laporan: invalid_value_null

  • NOT NULL columns with values that become NULL

    NOT NULL dihapus

    Kolom yang nilainya harus menjadi NULL tidak bisa mempertahankan NOT NULL, atau pemuatan akan berhenti.

    Baris laporan: not_null_relaxed

  • enum types

    TEXT dengan CHECK labelnya

    Teks dengan CHECK mempertahankan nilai yang sama.

  • enum columns holding values outside their labels

    TEXT tanpa CHECK

    Nilai yang tidak ada di label akan gagal di CHECK, jadi CHECK tidak dibuat.

    Baris laporan: enum_check_skipped

  • uuid, inet, cidr, macaddr

    TEXT

    SQLite tidak punya tipe seperti itu; teksnya mempertahankan setiap nilai.

  • bytea

    BLOB

    Byte tetap byte.

  • bit(n), bit varying

    INTEGER dengan nilai bit hingga 63 bit; digit TEXT jika lebih

    String bit disimpan sebagai angka yang dibentuk bit-bitnya selama muat dalam bilangan bulat bertanda.

  • oid, xid, cid

    INTEGER dengan CHECK bahwa nilainya tidak negatif

    Bilangan bulat 64-bit SQLite memuat setiap nilai.

  • citext and nondeterministic collations

    perbandingan persis

    SQLite membandingkan teks secara persis kecuali diatur lain, dan NOCASE-nya hanya menyamakan huruf ASCII.

    Baris laporan: case_insensitive_collation

  • serial, identity

    INTEGER PRIMARY KEY AUTOINCREMENT, berlanjut setelah id tertinggi

    SQLite menghitung primary key bilangan bulat yang utuh, dan AUTOINCREMENT mencegah id dipakai ulang, seperti sequence.

  • serial and identity columns that aren't the whole primary key

    INTEGER tanpa penghitung

    SQLite hanya menghitung kolom yang menjadi seluruh primary key, jadi kolom itu mempertahankan nilainya dan baris baru perlu nilainya sendiri.

    Baris laporan: counter_dropped

  • sequences not owned by a column

    tidak dibuat

    SQLite tidak punya sequence.

    Baris laporan: sequence_not_converted

  • generated columns

    GENERATED ALWAYS AS, STORED atau VIRTUAL seperti di sumber

    SQLite 3.31 dan yang lebih baru menghitung kolom generated dengan dua cara yang sama.

  • generated columns with functions SQLite lacks

    kolom biasa berisi nilainya

    Rumus yang tidak bisa ditulis untuk SQLite menyisakan kolom biasa berisi nilai dari dump dan satu baris laporan.

    Baris laporan: generated_not_translated

  • defaults with functions SQLite lacks, and defaults from a sequence

    tanpa default

    Default yang tidak bisa ditulis untuk SQLite dihilangkan dan dilaporkan.

    Baris laporan: default_not_translated

  • CHECK constraints

    diterjemahkan, langsung di CREATE TABLE

    SQLite hanya menerima CHECK di CREATE TABLE.

  • CHECK constraints with functions SQLite lacks

    tidak dibuat

    CHECK yang tidak bisa ditulis untuk SQLite dihilangkan dan dilaporkan.

    Baris laporan: check_skipped

  • CHECK ... NOT VALID

    tidak dibuat

    PostgreSQL tidak pernah memeriksa baris yang sudah ada sebelumnya, dan SQLite akan memeriksanya saat pemuatan.

    Baris laporan: check_not_valid

  • gin, gist, brin and hash indexes, partial and expression indexes

    tidak dibuat

    IntoSQL menulis indeks b-tree pada kolom untuk SQLite; buat ulang indeks lainnya setelah pemuatan.

    Baris laporan: index_skipped

  • foreign keys

    di CREATE TABLE, dimuat tanpa diperiksa, lalu dicantumkan oleh PRAGMA foreign_key_check

    SQLite hanya menerima foreign key di CREATE TABLE dan hanya memeriksanya jika PRAGMA foreign_keys aktif. Baris dimuat tanpa diperiksa dan skrip diakhiri dengan daftar baris tanpa induk.

  • foreign keys to tables the dump doesn't create

    tidak dibuat

    Key tidak bisa merujuk ke tabel yang tidak ada.

    Baris laporan: foreign_key_skipped

  • partitioned tables

    satu tabel dengan baris dari setiap partisi

    Barisnya sama.

    Baris laporan: partitions_dropped

  • schemas

    satu file, nama tabel diawali nama skemanya

    Satu file SQLite adalah satu database, jadi nama skema membedakan tabel yang bernama sama; tabel di public mempertahankan namanya.

    Baris laporan: schemas_merged

  • views, functions, procedures, triggers, rules, policies, extensions and types

    dicantumkan di laporan

    Kodenya ditulis dalam bahasa PostgreSQL, jadi dicantumkan agar Anda buat ulang.

    Baris laporan: not_converted_objects

  • dumps without CREATE TABLE (--data-only)

    tipe dibaca dari nilainya

    Dump yang hanya berisi data hanya punya baris, jadi tipenya berasal dari nilainya.

    Baris laporan: no_schema

  • expressions in INSERT values

    NULL

    Konverter yang tidak menjalankan database tidak bisa mengevaluasinya.

    Baris laporan: expression_value

  • types IntoSQL doesn't know

    TEXT

    Teks memuat nilai apa pun; ubah tipenya setelah pemuatan.

    Baris laporan: unknown_type

  • text that isn't valid in its encoding

    byte yang rusak menjadi karakter pengganti

    Teks SQLite adalah UTF-8.

    Baris laporan: invalid_utf8_replaced

  • text decoded twice (ñ)

    disalin apa adanya

    Dump berisi persis karakter ini, jadi karakter itu disalin; laporan menunjukkannya.

    Baris laporan: mojibake_suspected

Di PostgreSQLDi SQLiteBaris laporan
booleanINTEGER 0 atau 1 dengan CHECKSQLite tidak punya tipe boolean; true dan false miliknya adalah 1 dan 0.
varchar(n), char(n), textVARCHAR(n) dan TEXT, tidak diterapkanSQLite menyimpan tipe yang dideklarasikan untuk dibaca alat, tetapi tidak membatasi panjangnya.
numeric(p,s) past 15 digits and numeric without a precisionTEXTSQLite menyimpan sekitar 15 digit signifikan dalam angka. Angka yang lebih lebar disimpan sebagai teks agar setiap digit tetap persis.decimal_as_text
moneyNUMERICSQLite tidak punya tipe money. Jumlahnya disimpan sebagai angka, tanpa simbol mata uang yang ditambahkan locale server.type_replaced
intervalTEXT berisi teks PostgreSQLSQLite tidak punya tipe interval; teksnya mempertahankan setiap bagian.type_replaced
arrays (integer[], text[]...)TEXT berisi array JSONSQLite tidak punya array. Array JSON mempertahankan setiap elemen dan NULL, dan fungsi JSON SQLite membacanya.type_replaced
ranges, geometric types, tsvector, xml, hstore, PostGIS, composite and extension typesTEXT berisi teks PostgreSQLSQLite tidak punya tipe yang setara, jadi setiap nilai mempertahankan teks yang ditulis PostgreSQL.type_replaced
json, jsonbTEXTFungsi JSON SQLite membaca JSON dari teks.
timestampDATETIME sebagai teks ISO 8601SQLite menyimpan tanggal sebagai teks yang dibaca fungsi tanggalnya.
timestamp with time zoneTIMESTAMP sebagai teks ISO 8601 dalam UTCSQLite tidak punya tipe yang menyimpan selisih waktu, jadi setiap momen ditulis dalam UTC: momen yang sama apa pun selisih yang ditulis dump.moments_as_utc
timeTIME sebagai teksSQLite menyimpan jam sebagai teks, termasuk 24:00:00.
infinity, -infinity and BC datesNULLFungsi tanggal SQLite membaca tahun 0 sampai 9999 tanpa infinity. Nilai itu menjadi NULL dan laporan menghitungnya.date_out_of_range
NaN and Infinity in numeric, real and double precisionNULLSQLite menyimpan NaN sebagai NULL dan infinity-nya tidak bertahan di setiap alat, jadi nilai itu menjadi NULL dan laporan menghitungnya.invalid_value_null
NOT NULL columns with values that become NULLNOT NULL dihapusKolom yang nilainya harus menjadi NULL tidak bisa mempertahankan NOT NULL, atau pemuatan akan berhenti.not_null_relaxed
enum typesTEXT dengan CHECK labelnyaTeks dengan CHECK mempertahankan nilai yang sama.
enum columns holding values outside their labelsTEXT tanpa CHECKNilai yang tidak ada di label akan gagal di CHECK, jadi CHECK tidak dibuat.enum_check_skipped
uuid, inet, cidr, macaddrTEXTSQLite tidak punya tipe seperti itu; teksnya mempertahankan setiap nilai.
byteaBLOBByte tetap byte.
bit(n), bit varyingINTEGER dengan nilai bit hingga 63 bit; digit TEXT jika lebihString bit disimpan sebagai angka yang dibentuk bit-bitnya selama muat dalam bilangan bulat bertanda.
oid, xid, cidINTEGER dengan CHECK bahwa nilainya tidak negatifBilangan bulat 64-bit SQLite memuat setiap nilai.
citext and nondeterministic collationsperbandingan persisSQLite membandingkan teks secara persis kecuali diatur lain, dan NOCASE-nya hanya menyamakan huruf ASCII.case_insensitive_collation
serial, identityINTEGER PRIMARY KEY AUTOINCREMENT, berlanjut setelah id tertinggiSQLite menghitung primary key bilangan bulat yang utuh, dan AUTOINCREMENT mencegah id dipakai ulang, seperti sequence.
serial and identity columns that aren't the whole primary keyINTEGER tanpa penghitungSQLite hanya menghitung kolom yang menjadi seluruh primary key, jadi kolom itu mempertahankan nilainya dan baris baru perlu nilainya sendiri.counter_dropped
sequences not owned by a columntidak dibuatSQLite tidak punya sequence.sequence_not_converted
generated columnsGENERATED ALWAYS AS, STORED atau VIRTUAL seperti di sumberSQLite 3.31 dan yang lebih baru menghitung kolom generated dengan dua cara yang sama.
generated columns with functions SQLite lackskolom biasa berisi nilainyaRumus yang tidak bisa ditulis untuk SQLite menyisakan kolom biasa berisi nilai dari dump dan satu baris laporan.generated_not_translated
defaults with functions SQLite lacks, and defaults from a sequencetanpa defaultDefault yang tidak bisa ditulis untuk SQLite dihilangkan dan dilaporkan.default_not_translated
CHECK constraintsditerjemahkan, langsung di CREATE TABLESQLite hanya menerima CHECK di CREATE TABLE.
CHECK constraints with functions SQLite lackstidak dibuatCHECK yang tidak bisa ditulis untuk SQLite dihilangkan dan dilaporkan.check_skipped
CHECK ... NOT VALIDtidak dibuatPostgreSQL tidak pernah memeriksa baris yang sudah ada sebelumnya, dan SQLite akan memeriksanya saat pemuatan.check_not_valid
gin, gist, brin and hash indexes, partial and expression indexestidak dibuatIntoSQL menulis indeks b-tree pada kolom untuk SQLite; buat ulang indeks lainnya setelah pemuatan.index_skipped
foreign keysdi CREATE TABLE, dimuat tanpa diperiksa, lalu dicantumkan oleh PRAGMA foreign_key_checkSQLite hanya menerima foreign key di CREATE TABLE dan hanya memeriksanya jika PRAGMA foreign_keys aktif. Baris dimuat tanpa diperiksa dan skrip diakhiri dengan daftar baris tanpa induk.
foreign keys to tables the dump doesn't createtidak dibuatKey tidak bisa merujuk ke tabel yang tidak ada.foreign_key_skipped
partitioned tablessatu tabel dengan baris dari setiap partisiBarisnya sama.partitions_dropped
schemassatu file, nama tabel diawali nama skemanyaSatu file SQLite adalah satu database, jadi nama skema membedakan tabel yang bernama sama; tabel di public mempertahankan namanya.schemas_merged
views, functions, procedures, triggers, rules, policies, extensions and typesdicantumkan di laporanKodenya ditulis dalam bahasa PostgreSQL, jadi dicantumkan agar Anda buat ulang.not_converted_objects
dumps without CREATE TABLE (--data-only)tipe dibaca dari nilainyaDump yang hanya berisi data hanya punya baris, jadi tipenya berasal dari nilainya.no_schema
expressions in INSERT valuesNULLKonverter yang tidak menjalankan database tidak bisa mengevaluasinya.expression_value
types IntoSQL doesn't knowTEXTTeks memuat nilai apa pun; ubah tipenya setelah pemuatan.unknown_type
text that isn't valid in its encodingbyte yang rusak menjadi karakter penggantiTeks SQLite adalah UTF-8.invalid_utf8_replaced
text decoded twice (ñ)disalin apa adanyaDump berisi persis karakter ini, jadi karakter itu disalin; laporan menunjukkannya.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.

sqlite3 -bail mydb.sqlite < postgresql.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 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, materialized view, fungsi, prosedur, trigger, rule, kebijakan keamanan baris, ekstensi, dan tipe ditulis dalam bahasa PostgreSQL sendiri. Semuanya dicantumkan di laporan berdasarkan nama, tidak pernah dibuang diam-diam, sehingga Anda bisa menulis ulang untuk SQLite.

Pertanyaan tentang PostgreSQL ke SQLite

Tidak terjawab di sini? Tulis ke kami dari halaman kontak, dan seseorang akan membalas. Halaman kontak

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?

Kolom serial atau identity yang menjadi seluruh primary key tabel menjadi INTEGER PRIMARY KEY AUTOINCREMENT, setiap baris mempertahankan id-nya, dan id berikutnya berlanjut setelah id tertinggi. Kolom lain mempertahankan nilainya tanpa penghitung, dan laporan menyebutkannya.

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

Array menjadi array JSON, boolean menjadi 0 dan 1, enum menjadi text dengan CHECK labelnya, dan timestamp dengan zona waktu menjadi teks UTC. Numeric yang lebar tetap persis sebagai teks. Range, tipe geometris, dan tipe komposit mempertahankan teks PostgreSQL.

Bagaimana dengan fungsi, trigger, dan view?

Semuanya dicantumkan di laporan berdasarkan nama dan tidak dikonversi, karena setiap database menulisnya dalam bahasanya sendiri.

Di versi SQLite mana skrip bisa dimuat?

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