PostgreSQL - MariaDB 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 MariaDB betiği indirin. MariaDB'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 int not null name text not null email varchar(768) not null country char(2) not null is_active tinyint(1) not null tags json not null signed_up date created_at datetime(6) not null orders10 satır1
10 sütun id int not null customer_id int not null status enum('pending','paid','shipped','cancelled') not null total decimal(10,2) not null items smallint not null ordered_at datetime(6) not null shipped_at datetime(6) note text details json delivery varchar(100)
Dönüştürülmedi
- Görünüm paid_orders
Her veritabanı bunları kendi dilinde yazar. Bunları MariaDB için yeniden yazın.
-- Written by IntoSQL from a PostgreSQL dump. Load it with: mariadb --default-character-set=utf8mb4 <database> < <file>
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
SET UNIQUE_CHECKS = 0;
SET SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO,ALLOW_INVALID_DATES';
CREATE TABLE `customers` (
`id` int NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
`email` varchar(768) NOT NULL,
`country` char(2) NOT NULL DEFAULT 'US',
`is_active` tinyint(1) NOT NULL DEFAULT 1,
`tags` json NOT NULL,
`signed_up` date,
`created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
UNIQUE KEY `customers_email_key` (`email`),
PRIMARY KEY (`id`)
) AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='People who bought at least once';
CREATE TABLE `orders` (
`id` int NOT NULL AUTO_INCREMENT,
`customer_id` int NOT NULL,
`status` enum('pending','paid','shipped','cancelled') NOT NULL DEFAULT 'pending',
`total` decimal(10,2) NOT NULL,
`items` smallint NOT NULL DEFAULT 1,
`ordered_at` datetime(6) NOT NULL,
`shipped_at` datetime(6),
`note` text,
`details` json,
`delivery` varchar(100),
PRIMARY KEY (`id`),
KEY `idx_orders_customer` (`customer_id`),
KEY `idx_orders_status_date` (`status`,`ordered_at`),
CONSTRAINT `orders_total_check` CHECK (`total` >= (0)),
CONSTRAINT `orders_customer_id_fkey` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`)
) AUTO_INCREMENT=5001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
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);
SET UNIQUE_CHECKS = 1;
SET FOREIGN_KEY_CHECKS = 1;
Düzeltmeler
- customers tablosunun "created_at" sütunu saat dilimli anlar içeriyor; MariaDB'de bunu koruyan bir tür yok, bu yüzden datetime(6) olarak UTC'de saklanır.
- customers tablosunun "tags" sütunu text[]; MariaDB içinde bu tür yok, bu yüzden aynı değerlerle json olur.
- orders tablosunun "delivery" sütunu interval; MariaDB içinde bu tür yok, bu yüzden aynı değerlerle varchar(100) olur.
Kontrol edilmeli
- 1 görünüm, tetikleyici, rutin veya olay dönüştürülmedi; rapor her birini listeliyor. Bunları MariaDB'de elle yeniden oluşturun.
- customers tablosundaki "tags" sütununun varsayılan değeri MariaDB 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 MariaDB için yazılamayan bir ifade kullanıyor (neither MySQL 5.7 nor MariaDB index an expression); bu yüzden oluşturulmadı. Sorgular gerektiriyorsa indeksi elle oluşturun.
- orders tablosunun "shipped_at" sütunundaki 1 değer, infinity gibi MariaDB'in saklayamadığı bir tarih; bu yüzden NULL yapıldı. MariaDB 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 MariaDB 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
tinyint(1)
MariaDB'ın BOOLEAN türü TINYINT(1)'dir: true 1, false 0'dır.
varchar(n), char(n), text
1024 karaktere kadar varchar(n), 255'e kadar char(n), ötesi text
Metin her karakteri utf8mb4 olarak korur. Bir anahtardaki sütun en fazla varchar(768) olur; bir anahtarın tutabildiği en uzun değer budur.
numeric(p,s) past 65 digits or 30 decimals, and numeric values past what decimal(65,30) holds
varchar
MariaDB'ın decimal türü 30 ondalıkla 65 basamak tutar. Daha geniş sayılar her basamak tam kalsın diye metin olarak korunur; duyarlılığı olmayan numeric, değerleri sığıyorsa decimal(65,30) olur.
Rapor satırı: decimal_as_text
money
decimal(19,2)
MariaDB'de 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 varchar(100)
MariaDB'ın TIME türü 838 saate kadar süre tutar, ama bir interval ay ve gün içerir; metni her parçayı korur.
Rapor satırı: type_replaced
arrays (integer[], text[]...)
json dizileri
MariaDB'de dizi yoktur. Bir JSON dizisi her öğeyi ve NULL'u korur ve JSON fonksiyonları onu okur.
Rapor satırı: type_replaced
ranges, geometric types, tsvector, xml, hstore, composite and extension types
PostgreSQL'in metniyle longtext
MariaDB'de 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
json
Aynı JSON değerleri; jsonb'nin anahtar sırası ve boşlukları sunucunun belirlediği gibidir.
timestamp
datetime(p)
Saat dilimi olmayan bir timestamp, datetime gibi bir duvar saati okumasıdır.
timestamp with time zone
UTC'de datetime(p)
MariaDB'ın TIMESTAMP türü yalnızca 2038'e kadar ulaşır, bu yüzden anlar UTC'de datetime olarak saklanır; döküm hangi farkı yazmış olursa olsun an aynıdır.
Rapor satırı: moments_as_utc
time
time(p)
MariaDB'ın TIME türü, 24:00:00 dahil, günün her saatini tutar.
infinity, -infinity, BC dates and years past 9999
NULL
MariaDB sonsuzluk olmadan 1000 ile 9999 arası yılları saklar. 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
MariaDB'ın sayılarında NaN veya Infinity yoktur, 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
aynı etiketlerle enum(...)
MariaDB'ın ENUM türü etiketleri sıralarıyla korur.
uuid, inet, cidr
uuid uuid olarak, inet ve cidr varchar(43) olarak
MariaDB'de uuid türü vardır; adresler maske dahil metinlerini korur.
bytea
blob, mediumblob veya longblob; bir anahtarda varbinary(3072)
Baytlar bayt olarak kalır.
bit(n)
64'e kadar bit(n), ötesi text
64 bite kadar bir bit dizisi, bitlerinin oluşturduğu sayıdır; daha uzunu basamaklarını korur.
citext and nondeterministic collations
tam karşılaştırma
Tablolar utf8mb4_bin kullanır, böylece metin PostgreSQL'deki gibi tam karşılaştırılır; kaynakta büyük/küçük harfi yok sayan sütunlar bunu kaybeder.
Rapor satırı: case_insensitive_collation
serial, identity
en yüksek id'den sonra devam eden AUTO_INCREMENT
Birincil anahtarın başındaki sütun sayar; sayaç sequence'ın kaldığı yerden devam eder.
a second serial or identity column in a table
düz tam sayı
MariaDB tablo başına tek sütun sayar; diğerleri değerlerini sayaçsız korur.
Rapor satırı: counter_dropped
sequences not owned by a column
sonra vereceği değerden CREATE SEQUENCE
MariaDB sequence nesneleri aynı şekilde çalışır.
generated columns
kaynaktaki gibi STORED üretilen sütunlar
MariaDB bunları aynı şekilde hesaplar.
generated columns with functions MariaDB lacks
düz bir sütun
MariaDB için yazılamayan bir formül, düz bir sütun ve bir rapor satırı bırakır.
Rapor satırı: generated_not_translated
defaults with functions MariaDB lacks, and defaults from a sequence
varsayılan değer yok
MariaDB 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
MySQL 8.0.16 ve MariaDB bunları uygular; MySQL 5.7 denetlemeden tutar.
CHECK constraints with functions MariaDB lacks
oluşturulmaz
MariaDB 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, bu yüzden satırlar onu ihlal edebilir.
Rapor satırı: check_not_valid
gin, gist, brin and hash indexes, partial and expression indexes
oluşturulmaz
MariaDB'de yalnızca tüm sütunlar üzerinde, WHERE olmadan b-tree, tam metin ve uzamsal indeksler vardır.
Rapor satırı: index_skipped
foreign keys
FOREIGN_KEY_CHECKS=0 ile yüklenen yabancı anahtarlar
Satırlar herhangi bir sırayla yüklenir, anahtarlar sonrasında yeni satırları denetler.
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; gerekiyorsa tabloyu MariaDB'de yeniden bölümleyin.
Rapor satırı: partitions_dropped
schemas
tek veritabanı, tabloların adı önce şemalarının adıyla başlar
MariaDB'ın şemaları veritabanlarıdır ve tek bir veritabanına yüklenen bir betik bunları oluşturamaz; 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
longtext
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
Metin geçerli utf8mb4 olmalıdır.
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 | MariaDB içinde | Rapor satırı |
|---|---|---|
| boolean | tinyint(1)MariaDB'ın BOOLEAN türü TINYINT(1)'dir: true 1, false 0'dır. | |
| varchar(n), char(n), text | 1024 karaktere kadar varchar(n), 255'e kadar char(n), ötesi textMetin her karakteri utf8mb4 olarak korur. Bir anahtardaki sütun en fazla varchar(768) olur; bir anahtarın tutabildiği en uzun değer budur. | |
| numeric(p,s) past 65 digits or 30 decimals, and numeric values past what decimal(65,30) holds | varcharMariaDB'ın decimal türü 30 ondalıkla 65 basamak tutar. Daha geniş sayılar her basamak tam kalsın diye metin olarak korunur; duyarlılığı olmayan numeric, değerleri sığıyorsa decimal(65,30) olur. | decimal_as_text |
| money | decimal(19,2)MariaDB'de 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 varchar(100)MariaDB'ın TIME türü 838 saate kadar süre tutar, ama bir interval ay ve gün içerir; metni her parçayı korur. | type_replaced |
| arrays (integer[], text[]...) | json dizileriMariaDB'de dizi yoktur. Bir JSON dizisi her öğeyi ve NULL'u korur ve JSON fonksiyonları onu okur. | type_replaced |
| ranges, geometric types, tsvector, xml, hstore, composite and extension types | PostgreSQL'in metniyle longtextMariaDB'de karşılık gelen bir tür yoktur, bu yüzden her değer PostgreSQL'in yazdığı metni korur. | type_replaced |
| json, jsonb | jsonAynı JSON değerleri; jsonb'nin anahtar sırası ve boşlukları sunucunun belirlediği gibidir. | |
| timestamp | datetime(p)Saat dilimi olmayan bir timestamp, datetime gibi bir duvar saati okumasıdır. | |
| timestamp with time zone | UTC'de datetime(p)MariaDB'ın TIMESTAMP türü yalnızca 2038'e kadar ulaşır, bu yüzden anlar UTC'de datetime olarak saklanır; döküm hangi farkı yazmış olursa olsun an aynıdır. | moments_as_utc |
| time | time(p)MariaDB'ın TIME türü, 24:00:00 dahil, günün her saatini tutar. | |
| infinity, -infinity, BC dates and years past 9999 | NULLMariaDB sonsuzluk olmadan 1000 ile 9999 arası yılları saklar. Bu değerler NULL olur ve rapor onları sayar. | date_out_of_range |
| NaN and Infinity in numeric, real and double precision | NULLMariaDB'ın sayılarında NaN veya Infinity yoktur, 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 | aynı etiketlerle enum(...)MariaDB'ın ENUM türü etiketleri sıralarıyla korur. | |
| uuid, inet, cidr | uuid uuid olarak, inet ve cidr varchar(43) olarakMariaDB'de uuid türü vardır; adresler maske dahil metinlerini korur. | |
| bytea | blob, mediumblob veya longblob; bir anahtarda varbinary(3072)Baytlar bayt olarak kalır. | |
| bit(n) | 64'e kadar bit(n), ötesi text64 bite kadar bir bit dizisi, bitlerinin oluşturduğu sayıdır; daha uzunu basamaklarını korur. | |
| citext and nondeterministic collations | tam karşılaştırmaTablolar utf8mb4_bin kullanır, böylece metin PostgreSQL'deki gibi tam karşılaştırılır; kaynakta büyük/küçük harfi yok sayan sütunlar bunu kaybeder. | case_insensitive_collation |
| serial, identity | en yüksek id'den sonra devam eden AUTO_INCREMENTBirincil anahtarın başındaki sütun sayar; sayaç sequence'ın kaldığı yerden devam eder. | |
| a second serial or identity column in a table | düz tam sayıMariaDB tablo başına tek sütun sayar; diğerleri değerlerini sayaçsız korur. | counter_dropped |
| sequences not owned by a column | sonra vereceği değerden CREATE SEQUENCEMariaDB sequence nesneleri aynı şekilde çalışır. | |
| generated columns | kaynaktaki gibi STORED üretilen sütunlarMariaDB bunları aynı şekilde hesaplar. | |
| generated columns with functions MariaDB lacks | düz bir sütunMariaDB için yazılamayan bir formül, düz bir sütun ve bir rapor satırı bırakır. | generated_not_translated |
| defaults with functions MariaDB lacks, and defaults from a sequence | varsayılan değer yokMariaDB 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çiMySQL 8.0.16 ve MariaDB bunları uygular; MySQL 5.7 denetlemeden tutar. | |
| CHECK constraints with functions MariaDB lacks | oluşturulmazMariaDB 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, bu yüzden satırlar onu ihlal edebilir. | check_not_valid |
| gin, gist, brin and hash indexes, partial and expression indexes | oluşturulmazMariaDB'de yalnızca tüm sütunlar üzerinde, WHERE olmadan b-tree, tam metin ve uzamsal indeksler vardır. | index_skipped |
| foreign keys | FOREIGN_KEY_CHECKS=0 ile yüklenen yabancı anahtarlarSatırlar herhangi bir sırayla yüklenir, anahtarlar sonrasında yeni satırları denetler. | |
| 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; gerekiyorsa tabloyu MariaDB'de yeniden bölümleyin. | partitions_dropped |
| schemas | tek veritabanı, tabloların adı önce şemalarının adıyla başlarMariaDB'ın şemaları veritabanlarıdır ve tek bir veritabanına yüklenen bir betik bunları oluşturamaz; 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 | longtextMetin 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 olarakMetin geçerli utf8mb4 olmalıdır. | 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 MariaDB 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.
mariadb --default-character-set=utf8mb4 mydb < postgresql.mariadb.sqlYabancı anahtarlar, mysqldump'ın yaptığı gibi, satırlar yüklenirken FOREIGN_KEY_CHECKS=0 ile dökümün tanımladığı şekilde oluşturulur.
Büyük bir döküm için istemciyi sunucuyla aynı makinede çalıştırın ve tek bir satır çok büyükse max_allowed_packet değerini artırın.
IntoSQL Pro, dosyayı masaüstü uygulamasından veya komut satırından doğrudan MariaDB veritabanına yükler; betik yazmanız gerekmez.
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ı MariaDB için yeniden yazabilirsiniz.
PostgreSQL - MariaDB 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?
Evet, tablo başına bir sütun için: birincil anahtarın başındaki serial veya identity sütunu AUTO_INCREMENT olur ve en yüksek id'den sonra devam eder. Bir sütuna ait olmayan sequence'lar, ulaştıkları değerden MariaDB sequence'ı olur.
Diziler, enum'lar ve diğer PostgreSQL türleri ne olur?
Diziler JSON dizisi, boolean'lar tinyint(1), enum'lar aynı etiketlerle ENUM, uuid UUID, money ise decimal olur. Range'ler, geometrik türler, hstore ve bileşik türler PostgreSQL'in metnini korur ve rapor hangi sütunlar olduğunu söyler.
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 MariaDB sürümlerinde yüklenir?
MariaDB 10.11 ve sonrası. Her test dökümü 10.11 ve 11.4 üzerinde yüklenir ve bir sorun çıkarsa ilk hatada durur.