PostgreSQL - SQLite dönüştürme
pg_dump veya pg_dumpall ile alınmış düz bir dökümü .sql veya .sql.gz olarak bırakın ve aynı tablolar, anahtarlar, indeksler ve verilerle bir SQLite betiği indirin. SQLite'in olduğu gibi tutamadığı her değer ve taşımadığı her nesne raporda listelenir.
18 satır dönüştürüldü, 3 düzeltme, reddedilen yok
shop_2024_postgres.sql içindeki tablolarPostgreSQL 18.6 dökümü · pg_dump ile yazıldı · utf8mb4
customers8 satır2
8 sütun id INTEGER not null name TEXT not null email TEXT not null country VARCHAR(2) not null is_active INTEGER not null tags TEXT not null signed_up DATE created_at TIMESTAMP not null orders10 satır1
10 sütun id INTEGER not null customer_id INTEGER not null status TEXT not null total DECIMAL(10,2) not null items INTEGER not null ordered_at DATETIME not null shipped_at DATETIME note TEXT details TEXT delivery TEXT
Dönüştürülmedi
- Görünüm paid_orders
Her veritabanı bunları kendi dilinde yazar. Bunları SQLite için yeniden yazın.
-- 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;
Düzeltmeler
- customers tablosunun "created_at" sütunu saat dilimli anlar içeriyor; SQLite'de bunu koruyan bir tür yok, bu yüzden TIMESTAMP olarak UTC'de saklanır.
- customers tablosunun "tags" sütunu text[]; SQLite içinde bu tür yok, bu yüzden aynı değerlerle TEXT olur.
- orders tablosunun "delivery" sütunu interval; SQLite içinde bu tür yok, bu yüzden aynı değerlerle TEXT olur.
Kontrol edilmeli
- 1 görünüm, tetikleyici, rutin veya olay dönüştürülmedi; rapor her birini listeliyor. Bunları SQLite'de elle yeniden oluşturun.
- customers tablosundaki "tags" sütununun varsayılan değeri SQLite için yazılamıyor (a value its type can't hold); bu yüzden sütunun varsayılan değeri yok. Yeni satırlar gerektiriyorsa varsayılan değeri elle ekleyin.
- orders üzerindeki idx_orders_details indeksi SQLite için yazılamayan bir ifade kullanıyor (a gin index); bu yüzden oluşturulmadı. Sorgular gerektiriyorsa indeksi elle oluşturun.
- orders tablosunun "shipped_at" sütunundaki 1 değer, infinity gibi SQLite'in saklayamadığı bir tarih; bu yüzden NULL yapıldı. SQLite sonsuzluk olmadan 1 ile 9999 arası yılları saklar; bu tarihler önemliyse kaynakta değiştirin.
Dosyan bu bilgisayarda dönüştürülür ve asla yüklenmez.
Diğer örnekler:
PostgreSQL ile SQLite arasında neler değişir
Her satır, dönüştürücünün uyguladığı bir kuraldır; yanında, kural verilerinizde bir şeyi değiştirdiğinde yazılan rapor satırı yer alır.
boolean
CHECK ile 0 veya 1 INTEGER
SQLite'ta boolean türü yoktur; kendi true ve false değerleri 1 ve 0'dır.
varchar(n), char(n), text
VARCHAR(n) ve TEXT, zorunlu tutulmaz
SQLite tanımlanan türü araçların okuması için tutar ama uzunluğu sınırlamaz.
numeric(p,s) past 15 digits and numeric without a precision
TEXT
SQLite bir sayıda yaklaşık 15 anlamlı basamak tutar. Daha geniş sayılar her basamak tam kalsın diye metin olarak korunur.
Rapor satırı: decimal_as_text
money
NUMERIC
SQLite'ta para türü yoktur. Tutar, sunucunun yerel ayarının eklediği para birimi simgesi olmadan sayı olarak korunur.
Rapor satırı: type_replaced
interval
PostgreSQL'in metniyle TEXT
SQLite'ta interval türü yoktur; metin her parçayı korur.
Rapor satırı: type_replaced
arrays (integer[], text[]...)
JSON dizisiyle TEXT
SQLite'ta dizi yoktur. Bir JSON dizisi her öğeyi ve NULL'u korur ve SQLite'ın JSON fonksiyonları onu okur.
Rapor satırı: type_replaced
ranges, geometric types, tsvector, xml, hstore, PostGIS, composite and extension types
PostgreSQL'in metniyle TEXT
SQLite'ta karşılık gelen bir tür yoktur, bu yüzden her değer PostgreSQL'in yazdığı metni korur.
Rapor satırı: type_replaced
json, jsonb
TEXT
SQLite'ın JSON fonksiyonları JSON'u metinden okur.
timestamp
ISO 8601 metni olarak DATETIME
SQLite tarihleri, tarih fonksiyonlarının okuduğu metin olarak saklar.
timestamp with time zone
UTC'de ISO 8601 metni olarak TIMESTAMP
SQLite'ta farkı koruyan bir tür yoktur, bu yüzden her an UTC'de yazılır: döküm hangi farkı yazmış olursa olsun an aynıdır.
Rapor satırı: moments_as_utc
time
metin olarak TIME
SQLite zamanları, 24:00:00 dahil, metin olarak tutar.
infinity, -infinity and BC dates
NULL
SQLite'ın tarih fonksiyonları sonsuzluk olmadan 0 ile 9999 arası yılları okur. Bu değerler NULL olur ve rapor onları sayar.
Rapor satırı: date_out_of_range
NaN and Infinity in numeric, real and double precision
NULL
SQLite NaN'ı NULL olarak saklar ve sonsuzluğu her araçta korunmaz, bu yüzden bu değerler NULL olur ve rapor onları sayar.
Rapor satırı: invalid_value_null
NOT NULL columns with values that become NULL
NOT NULL kaldırılır
Değerleri NULL olmak zorunda kalan bir sütun NOT NULL kısıtını koruyamaz, yoksa yükleme durur.
Rapor satırı: not_null_relaxed
enum types
etiketlerini denetleyen bir CHECK ile TEXT
CHECK ile metin aynı değerleri korur.
enum columns holding values outside their labels
CHECK olmadan TEXT
Etiketlerde adı geçmeyen değerler CHECK'ten geçemez; bu yüzden CHECK oluşturulmaz.
Rapor satırı: enum_check_skipped
uuid, inet, cidr, macaddr
TEXT
SQLite'ta bu türler yoktur; metin her değeri korur.
bytea
BLOB
Baytlar bayt olarak kalır.
bit(n), bit varying
63 bite kadar bitlerin değeriyle INTEGER; ötesi TEXT basamakları
Bir bit dizisi, işaretli bir tam sayıya sığdığı sürece bitlerinin oluşturduğu sayı olarak saklanır.
oid, xid, cid
negatif olmadığını denetleyen bir CHECK ile INTEGER
SQLite'ın 64 bitlik tam sayıları her değeri tutar.
citext and nondeterministic collations
tam karşılaştırma
SQLite, aksi belirtilmedikçe metni tam karşılaştırır ve NOCASE yalnızca ASCII harflerini dönüştürür.
Rapor satırı: case_insensitive_collation
serial, identity
en yüksek id'den sonra devam eden INTEGER PRIMARY KEY AUTOINCREMENT
SQLite tam bir tam sayı birincil anahtarı sayar ve AUTOINCREMENT, bir sequence gibi, id'lerin yeniden kullanılmasını önler.
serial and identity columns that aren't the whole primary key
sayaçsız INTEGER
SQLite yalnızca birincil anahtarın tamamı olan bir sütunu sayar, bu yüzden sütun değerlerini korur ve yeni satırlara değer verilmesi gerekir.
Rapor satırı: counter_dropped
sequences not owned by a column
oluşturulmaz
SQLite'ta sequence yoktur.
Rapor satırı: sequence_not_converted
generated columns
kaynaktaki gibi STORED veya VIRTUAL, GENERATED ALWAYS AS
SQLite 3.31 ve sonrası üretilen sütunları aynı iki şekilde hesaplar.
generated columns with functions SQLite lacks
değerleriyle düz bir sütun
SQLite için yazılamayan bir formül, dökümün değerleriyle düz bir sütun ve bir rapor satırı bırakır.
Rapor satırı: generated_not_translated
defaults with functions SQLite lacks, and defaults from a sequence
varsayılan değer yok
SQLite için yazılamayan bir varsayılan değer dışarıda bırakılır ve raporlanır.
Rapor satırı: default_not_translated
CHECK constraints
çevrilir, CREATE TABLE içinde satır içi
SQLite CHECK kısıtlarını yalnızca CREATE TABLE içinde alır.
CHECK constraints with functions SQLite lacks
oluşturulmaz
SQLite için yazılamayan bir CHECK kısıtı dışarıda bırakılır ve raporlanır.
Rapor satırı: check_skipped
CHECK ... NOT VALID
oluşturulmaz
PostgreSQL daha önce var olan satırları hiç denetlemedi ve SQLite onları yüklerken denetlerdi.
Rapor satırı: check_not_valid
gin, gist, brin and hash indexes, partial and expression indexes
oluşturulmaz
IntoSQL, SQLite için sütunlar üzerinde b-tree indeksleri yazar; diğerlerini yüklemeden sonra yeniden oluşturun.
Rapor satırı: index_skipped
foreign keys
CREATE TABLE içinde, denetlenmeden yüklenir, ardından PRAGMA foreign_key_check ile listelenir
SQLite yabancı anahtarları yalnızca CREATE TABLE içinde kabul eder ve yalnızca PRAGMA foreign_keys açıkken denetler. Satırlar denetlenmeden yüklenir ve betik, üst satırı olmayan her satırı listeleyerek biter.
foreign keys to tables the dump doesn't create
oluşturulmaz
Bir anahtar, var olmayan bir tabloya başvuramaz.
Rapor satırı: foreign_key_skipped
partitioned tables
her bölümün satırlarını içeren tek tablo
Satırlar aynıdır.
Rapor satırı: partitions_dropped
schemas
tek dosya, tabloların adı önce şemalarının adıyla başlar
Bir SQLite dosyası tek bir veritabanıdır, bu yüzden şema adı aynı adlı tabloları birbirinden ayırır; public içindeki tablolar adlarını korur.
Rapor satırı: schemas_merged
views, functions, procedures, triggers, rules, policies, extensions and types
raporda listelenir
Kodları PostgreSQL'in dilinde yazılmıştır, bu yüzden yeniden oluşturmanız için listelenirler.
Rapor satırı: not_converted_objects
dumps without CREATE TABLE (--data-only)
değerlerden okunan türler
Yalnızca veri içeren bir dökümde yalnızca satırlar vardır, bu yüzden türler değerlerden gelir.
Rapor satırı: no_schema
expressions in INSERT values
NULL
Veritabanı çalıştırmayan bir dönüştürücü bunları hesaplayamaz.
Rapor satırı: expression_value
types IntoSQL doesn't know
TEXT
Metin her değeri tutar; yüklemeden sonra türü değiştirin.
Rapor satırı: unknown_type
text that isn't valid in its encoding
hatalı baytlar yerine koyma karakteri olarak
SQLite metni UTF-8'dir.
Rapor satırı: invalid_utf8_replaced
text decoded twice (ñ)
olduğu gibi kopyalanır
Döküm tam olarak bu karakterleri içerir, bu yüzden kopyalanırlar; rapor onları gösterir.
Rapor satırı: mojibake_suspected
| PostgreSQL içinde | SQLite içinde | Rapor satırı |
|---|---|---|
| boolean | CHECK ile 0 veya 1 INTEGERSQLite'ta boolean türü yoktur; kendi true ve false değerleri 1 ve 0'dır. | |
| varchar(n), char(n), text | VARCHAR(n) ve TEXT, zorunlu tutulmazSQLite tanımlanan türü araçların okuması için tutar ama uzunluğu sınırlamaz. | |
| numeric(p,s) past 15 digits and numeric without a precision | TEXTSQLite bir sayıda yaklaşık 15 anlamlı basamak tutar. Daha geniş sayılar her basamak tam kalsın diye metin olarak korunur. | decimal_as_text |
| money | NUMERICSQLite'ta para türü yoktur. Tutar, sunucunun yerel ayarının eklediği para birimi simgesi olmadan sayı olarak korunur. | type_replaced |
| interval | PostgreSQL'in metniyle TEXTSQLite'ta interval türü yoktur; metin her parçayı korur. | type_replaced |
| arrays (integer[], text[]...) | JSON dizisiyle TEXTSQLite'ta dizi yoktur. Bir JSON dizisi her öğeyi ve NULL'u korur ve SQLite'ın JSON fonksiyonları onu okur. | type_replaced |
| ranges, geometric types, tsvector, xml, hstore, PostGIS, composite and extension types | PostgreSQL'in metniyle TEXTSQLite'ta karşılık gelen bir tür yoktur, bu yüzden her değer PostgreSQL'in yazdığı metni korur. | type_replaced |
| json, jsonb | TEXTSQLite'ın JSON fonksiyonları JSON'u metinden okur. | |
| timestamp | ISO 8601 metni olarak DATETIMESQLite tarihleri, tarih fonksiyonlarının okuduğu metin olarak saklar. | |
| timestamp with time zone | UTC'de ISO 8601 metni olarak TIMESTAMPSQLite'ta farkı koruyan bir tür yoktur, bu yüzden her an UTC'de yazılır: döküm hangi farkı yazmış olursa olsun an aynıdır. | moments_as_utc |
| time | metin olarak TIMESQLite zamanları, 24:00:00 dahil, metin olarak tutar. | |
| infinity, -infinity and BC dates | NULLSQLite'ın tarih fonksiyonları sonsuzluk olmadan 0 ile 9999 arası yılları okur. Bu değerler NULL olur ve rapor onları sayar. | date_out_of_range |
| NaN and Infinity in numeric, real and double precision | NULLSQLite NaN'ı NULL olarak saklar ve sonsuzluğu her araçta korunmaz, bu yüzden bu değerler NULL olur ve rapor onları sayar. | invalid_value_null |
| NOT NULL columns with values that become NULL | NOT NULL kaldırılırDeğerleri NULL olmak zorunda kalan bir sütun NOT NULL kısıtını koruyamaz, yoksa yükleme durur. | not_null_relaxed |
| enum types | etiketlerini denetleyen bir CHECK ile TEXTCHECK ile metin aynı değerleri korur. | |
| enum columns holding values outside their labels | CHECK olmadan TEXTEtiketlerde adı geçmeyen değerler CHECK'ten geçemez; bu yüzden CHECK oluşturulmaz. | enum_check_skipped |
| uuid, inet, cidr, macaddr | TEXTSQLite'ta bu türler yoktur; metin her değeri korur. | |
| bytea | BLOBBaytlar bayt olarak kalır. | |
| bit(n), bit varying | 63 bite kadar bitlerin değeriyle INTEGER; ötesi TEXT basamaklarıBir bit dizisi, işaretli bir tam sayıya sığdığı sürece bitlerinin oluşturduğu sayı olarak saklanır. | |
| oid, xid, cid | negatif olmadığını denetleyen bir CHECK ile INTEGERSQLite'ın 64 bitlik tam sayıları her değeri tutar. | |
| citext and nondeterministic collations | tam karşılaştırmaSQLite, aksi belirtilmedikçe metni tam karşılaştırır ve NOCASE yalnızca ASCII harflerini dönüştürür. | case_insensitive_collation |
| serial, identity | en yüksek id'den sonra devam eden INTEGER PRIMARY KEY AUTOINCREMENTSQLite tam bir tam sayı birincil anahtarı sayar ve AUTOINCREMENT, bir sequence gibi, id'lerin yeniden kullanılmasını önler. | |
| serial and identity columns that aren't the whole primary key | sayaçsız INTEGERSQLite yalnızca birincil anahtarın tamamı olan bir sütunu sayar, bu yüzden sütun değerlerini korur ve yeni satırlara değer verilmesi gerekir. | counter_dropped |
| sequences not owned by a column | oluşturulmazSQLite'ta sequence yoktur. | sequence_not_converted |
| generated columns | kaynaktaki gibi STORED veya VIRTUAL, GENERATED ALWAYS ASSQLite 3.31 ve sonrası üretilen sütunları aynı iki şekilde hesaplar. | |
| generated columns with functions SQLite lacks | değerleriyle düz bir sütunSQLite için yazılamayan bir formül, dökümün değerleriyle düz bir sütun ve bir rapor satırı bırakır. | generated_not_translated |
| defaults with functions SQLite lacks, and defaults from a sequence | varsayılan değer yokSQLite için yazılamayan bir varsayılan değer dışarıda bırakılır ve raporlanır. | default_not_translated |
| CHECK constraints | çevrilir, CREATE TABLE içinde satır içiSQLite CHECK kısıtlarını yalnızca CREATE TABLE içinde alır. | |
| CHECK constraints with functions SQLite lacks | oluşturulmazSQLite için yazılamayan bir CHECK kısıtı dışarıda bırakılır ve raporlanır. | check_skipped |
| CHECK ... NOT VALID | oluşturulmazPostgreSQL daha önce var olan satırları hiç denetlemedi ve SQLite onları yüklerken denetlerdi. | check_not_valid |
| gin, gist, brin and hash indexes, partial and expression indexes | oluşturulmazIntoSQL, SQLite için sütunlar üzerinde b-tree indeksleri yazar; diğerlerini yüklemeden sonra yeniden oluşturun. | index_skipped |
| foreign keys | CREATE TABLE içinde, denetlenmeden yüklenir, ardından PRAGMA foreign_key_check ile listelenirSQLite yabancı anahtarları yalnızca CREATE TABLE içinde kabul eder ve yalnızca PRAGMA foreign_keys açıkken denetler. Satırlar denetlenmeden yüklenir ve betik, üst satırı olmayan her satırı listeleyerek biter. | |
| foreign keys to tables the dump doesn't create | oluşturulmazBir anahtar, var olmayan bir tabloya başvuramaz. | foreign_key_skipped |
| partitioned tables | her bölümün satırlarını içeren tek tabloSatırlar aynıdır. | partitions_dropped |
| schemas | tek dosya, tabloların adı önce şemalarının adıyla başlarBir SQLite dosyası tek bir veritabanıdır, bu yüzden şema adı aynı adlı tabloları birbirinden ayırır; public içindeki tablolar adlarını korur. | schemas_merged |
| views, functions, procedures, triggers, rules, policies, extensions and types | raporda listelenirKodları PostgreSQL'in dilinde yazılmıştır, bu yüzden yeniden oluşturmanız için listelenirler. | not_converted_objects |
| dumps without CREATE TABLE (--data-only) | değerlerden okunan türlerYalnızca veri içeren bir dökümde yalnızca satırlar vardır, bu yüzden türler değerlerden gelir. | no_schema |
| expressions in INSERT values | NULLVeritabanı çalıştırmayan bir dönüştürücü bunları hesaplayamaz. | expression_value |
| types IntoSQL doesn't know | TEXTMetin her değeri tutar; yüklemeden sonra türü değiştirin. | unknown_type |
| text that isn't valid in its encoding | hatalı baytlar yerine koyma karakteri olarakSQLite metni UTF-8'dir. | invalid_utf8_replaced |
| text decoded twice (ñ) | olduğu gibi kopyalanırDöküm tam olarak bu karakterleri içerir, bu yüzden kopyalanırlar; rapor onları gösterir. | mojibake_suspected |
Betiği SQLite veritabanına yükleyin
Betik tabloları oluşturur, satırları kopyalar, ardından anahtarları, indeksleri ve yabancı anahtarları ekler; böylece hızlı yüklenir ve ilk hatada durur.
sqlite3 -bail mydb.sqlite < postgresql.sqlite.sqlYabancı anahtarlar her tabloda tanımlanır ve satırlar yabancı anahtar denetimleri kapalıyken yüklenir. Betik ardından, yarı yolda başarısız olmak yerine, var olmayan bir satıra işaret eden her satırı listeler.
Büyük bir döküm için yerel bir diskte yeni bir dosyaya yükleyin. Betik her şeyi senkronizasyon kapalı tek bir işlemde yükler; böylece disk hızında çalışır ve yarı yolda duran bir yükleme yarım tablo bırakmaz.
Komut satırı dosyayı doğrudan bir SQLite veritabanına yükler; betik yazmanız gerekmez. Ücretsizdir.
En iyi sonuç için PostgreSQL dökümü nasıl alınır
Dönüştürücü, dökümün içerdiğini okur. Bu seçenekler verilerinizin daha fazlasını dökümde tutar:
- --format=plain, pg_dump'ın varsayılanı, SQL yazar. Custom veya directory arşivi (-Fc, -Fd), veritabanı sunucusu olmadan pg_restore -f dump.sql ile SQL'e çevrilir.
- --no-owner --no-privileges rolleri ve yetkileri dışarıda bırakır; dönüştürücü bunları zaten atlar, böylece döküm küçülür.
- pg_dumpall her veritabanını tek dosyaya döker; her birinin tablolarının adı onun adıyla başlar, böylece hiçbir şey çakışmaz.
Neler dönüştürülmez
Görünümler, somutlaştırılmış görünümler, fonksiyonlar, saklı yordamlar, tetikleyiciler, kurallar, satır güvenlik ilkeleri, eklentiler ve türler PostgreSQL'in kendi dilinde yazılır. Raporda adlarıyla listelenirler, asla sessizce atlanmazlar; böylece onları SQLite için yeniden yazabilirsiniz.
PostgreSQL - SQLite dönüştürme hakkında sorular
Yanıtınızı bulamadınız mı? İletişim sayfasından bize yazın, bir kişi yanıt verir. İletişim sayfası
Dökümüm yükleniyor mu?
Hayır. Dönüştürücü tarayıcınızda çalışır ve dökümü diskinizden parça parça okur; böylece döküm bilgisayarınızdan hiç çıkmaz. Masaüstü uygulaması ve komut satırı da bilgisayarınızda dönüştürür.
Döküm ne kadar büyük olabilir?
Dönüştürücü dökümün tamamını asla bellekte tutmaz: dosyayı aralıklar halinde iki kez okur ve betiği ilerledikçe yazar. Birkaç gigabaytlık dökümler tarayıcıda, masaüstü uygulamasında ve komut satırıyla dönüştürülür.
pg_dump -Fc arşivlerini okuyor mu?
Doğrudan değil: custom arşiv ikili bir biçimdir. pg_restore -f dump.sql dump.backup, bir sunucuya bağlanmadan onu dönüştürücünün okuduğu düz SQL'e çevirir. Dönüştürücü bir arşiv aldığında bunu söyler.
Döküm hangi PostgreSQL sürümlerinden gelebilir?
PostgreSQL 10 ve sonrasından pg_dump ve pg_dumpall ile yazılmış, COPY veya INSERT satırları içeren dökümler. Her test dökümü PostgreSQL 13 ve 18'den gelir ve kaynağıyla hücre hücre karşılaştırılır.
serial ve identity değerleri korunuyor mu?
Tablonun birincil anahtarının tamamı olan bir serial veya identity sütunu INTEGER PRIMARY KEY AUTOINCREMENT olur, her satır kendi id'sini korur ve sonraki id en yüksek id'den sonra devam eder. Diğerleri değerlerini sayaçsız korur ve rapor bunu belirtir.
Diziler, enum'lar ve diğer PostgreSQL türleri ne olur?
Diziler JSON dizisi, boolean'lar 0 ve 1, enum'lar etiketlerini denetleyen bir CHECK ile metin, saat dilimli timestamp'ler UTC metni olur. Geniş numeric'ler metin olarak tam kalır. Range'ler, geometrik türler ve bileşik türler PostgreSQL'in metnini korur.
Fonksiyonlar, tetikleyiciler ve görünümler ne olur?
Raporda adlarıyla listelenirler ve dönüştürülmezler, çünkü her veritabanı onları kendi dilinde yazar.
Betik hangi SQLite sürümlerinde yüklenir?
SQLite 3.31 ve sonrası. Her test dökümü 3.31 ve 3.54 üzerinde yüklenir ve bir sorun çıkarsa ilk hatada durur.