Chuyển PostgreSQL sang MariaDB
Thả bản dump dạng plain từ pg_dump hoặc pg_dumpall, dạng .sql hoặc .sql.gz, và tải xuống tập lệnh MariaDB với cùng bảng, khóa, chỉ mục và dữ liệu. Mọi giá trị MariaDB không chứa được nguyên trạng, và mọi đối tượng nó không hỗ trợ, đều được liệt kê trong báo cáo.
Đã chuyển đổi 18 hàng, 3 bản sửa, không hàng nào bị từ chối
Các bảng trong shop_2024_postgres.sqlBản dump PostgreSQL 18.6 · do pg_dump ghi · utf8mb4
customers8 hàng2
8 cột 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 hàng1
10 cột 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)
Không được chuyển đổi
- Khung nhìn paid_orders
Mỗi cơ sở dữ liệu viết các đối tượng này bằng ngôn ngữ riêng. Hãy viết lại chúng cho MariaDB.
-- 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;
Bản sửa
- "created_at" của customers chứa thời điểm kèm múi giờ; MariaDB không có kiểu giữ được múi giờ, nên chúng được lưu theo UTC dưới dạng datetime(6).
- "tags" của customers là text[], kiểu MariaDB không có, nên là json với cùng giá trị.
- "delivery" của orders là interval, kiểu MariaDB không có, nên là varchar(100) với cùng giá trị.
Cần xem lại
- 1 khung nhìn, trình kích hoạt, thủ tục hoặc sự kiện không được chuyển đổi; báo cáo liệt kê từng mục. Hãy tạo lại chúng thủ công trong MariaDB.
- Giá trị mặc định của "tags" trong customers không viết được cho MariaDB (a value its type can't hold), nên cột không có giá trị mặc định. Hãy thêm giá trị mặc định thủ công nếu hàng mới cần nó.
- Chỉ mục idx_orders_details trên orders dùng một biểu thức không viết được cho MariaDB (neither MySQL 5.7 nor MariaDB index an expression), nên không được tạo. Hãy tạo chỉ mục thủ công nếu truy vấn cần nó.
- 1 giá trị trong "shipped_at" của orders là ngày mà MariaDB không lưu được, như infinity, nên chúng là NULL. MariaDB lưu năm từ 1 đến 9999, không có vô cực; hãy thay các ngày đó trong nguồn nếu chúng quan trọng.
Tệp được chuyển đổi ngay trên máy tính này và không bao giờ được tải lên.
Mẫu khác:
Những gì thay đổi từ PostgreSQL sang MariaDB
Mỗi hàng là một quy tắc trình chuyển đổi áp dụng, kèm dòng báo cáo được ghi khi quy tắc thay đổi dữ liệu của bạn.
boolean
tinyint(1)
BOOLEAN của MariaDB là TINYINT(1): true là 1 và false là 0.
varchar(n), char(n), text
varchar(n) đến 1024 ký tự, char(n) đến 255, dài hơn là text
Văn bản giữ mọi ký tự dưới dạng utf8mb4. Cột trong khóa tối đa là varchar(768), độ dài lớn nhất một khóa chứa được.
numeric(p,s) past 65 digits or 30 decimals, and numeric values past what decimal(65,30) holds
varchar
decimal của MariaDB chứa 65 chữ số với 30 chữ số thập phân. Số rộng hơn được giữ dạng văn bản để mọi chữ số vẫn chính xác; numeric không có độ chính xác là decimal(65,30) khi giá trị vừa.
Dòng báo cáo: decimal_as_text
money
decimal(19,2)
MariaDB không có kiểu tiền tệ. Số tiền được giữ dạng số, không kèm ký hiệu tiền tệ mà locale của máy chủ đã thêm.
Dòng báo cáo: type_replaced
interval
varchar(100) với văn bản của PostgreSQL
TIME của MariaDB chứa khoảng thời gian đến 838 giờ, nhưng interval có tháng và ngày; văn bản của nó giữ mọi phần.
Dòng báo cáo: type_replaced
arrays (integer[], text[]...)
mảng json
MariaDB không có mảng. Mảng JSON giữ mọi phần tử và NULL, và các hàm JSON đọc được nó.
Dòng báo cáo: type_replaced
ranges, geometric types, tsvector, xml, hstore, composite and extension types
longtext với văn bản của PostgreSQL
MariaDB không có kiểu tương đương, nên mỗi giá trị giữ văn bản PostgreSQL đã ghi.
Dòng báo cáo: type_replaced
json, jsonb
json
Cùng các giá trị JSON; thứ tự khóa và khoảng trắng của jsonb là do máy chủ.
timestamp
datetime(p)
timestamp không có múi giờ là thời gian theo đồng hồ, giống datetime.
timestamp with time zone
datetime(p) theo UTC
TIMESTAMP của MariaDB chỉ đến năm 2038, nên thời điểm được lưu dạng datetime theo UTC, cùng một thời điểm dù bản dump ghi độ lệch nào.
Dòng báo cáo: moments_as_utc
time
time(p)
TIME của MariaDB chứa mọi giờ trong ngày, kể cả 24:00:00.
infinity, -infinity, BC dates and years past 9999
NULL
MariaDB lưu năm từ 1000 đến 9999, không có vô cực. Các giá trị đó trở thành NULL và báo cáo đếm số lượng.
Dòng báo cáo: date_out_of_range
NaN and Infinity in numeric, real and double precision
NULL
Số của MariaDB không có NaN hay Infinity, nên các giá trị đó trở thành NULL và báo cáo đếm số lượng.
Dòng báo cáo: invalid_value_null
NOT NULL columns with values that become NULL
bỏ NOT NULL
Cột có giá trị phải chuyển thành NULL không thể giữ NOT NULL, nếu không quá trình nạp sẽ dừng.
Dòng báo cáo: not_null_relaxed
enum types
enum(...) với cùng các nhãn
ENUM của MariaDB giữ các nhãn theo thứ tự của chúng.
uuid, inet, cidr
uuid dạng uuid, inet và cidr dạng varchar(43)
MariaDB có kiểu uuid; địa chỉ giữ văn bản, kể cả mặt nạ.
bytea
blob, mediumblob hoặc longblob; varbinary(3072) trong khóa
Byte vẫn là byte.
bit(n)
bit(n) đến 64, dài hơn là text
Chuỗi bit đến 64 bit là số do các bit tạo thành; chuỗi dài hơn giữ các chữ số của nó.
citext and nondeterministic collations
so sánh chính xác
Bảng dùng utf8mb4_bin để văn bản được so sánh chính xác, như PostgreSQL; cột không phân biệt hoa thường trong nguồn sẽ mất điều đó.
Dòng báo cáo: case_insensitive_collation
serial, identity
AUTO_INCREMENT, tiếp tục sau id lớn nhất
Cột đứng đầu khóa chính được đếm; bộ đếm tiếp tục từ chỗ sequence dừng lại.
a second serial or identity column in a table
số nguyên thường
MariaDB đếm một cột mỗi bảng; cột khác giữ giá trị mà không có bộ đếm.
Dòng báo cáo: counter_dropped
sequences not owned by a column
CREATE SEQUENCE, ở giá trị sẽ cấp tiếp theo
Sequence của MariaDB hoạt động theo cùng cách.
generated columns
cột tính toán, STORED như trong nguồn
MariaDB tính chúng theo cùng cách.
generated columns with functions MariaDB lacks
một cột thường
Công thức không viết được cho MariaDB để lại một cột thường và một dòng trong báo cáo.
Dòng báo cáo: generated_not_translated
defaults with functions MariaDB lacks, and defaults from a sequence
không có giá trị mặc định
Giá trị mặc định không viết được cho MariaDB sẽ bị bỏ và được báo cáo.
Dòng báo cáo: default_not_translated
CHECK constraints
được chuyển đổi, viết trực tiếp trong CREATE TABLE
MySQL 8.0.16 và MariaDB áp dụng chúng; MySQL 5.7 giữ chúng nhưng không kiểm tra.
CHECK constraints with functions MariaDB lacks
không được tạo
Ràng buộc kiểm tra không viết được cho MariaDB sẽ bị bỏ và được báo cáo.
Dòng báo cáo: check_skipped
CHECK ... NOT VALID
không được tạo
PostgreSQL chưa bao giờ kiểm tra các hàng có từ trước, nên chúng có thể vi phạm ràng buộc.
Dòng báo cáo: check_not_valid
gin, gist, brin and hash indexes, partial and expression indexes
không được tạo
MariaDB chỉ có chỉ mục b-tree, toàn văn và không gian, trên toàn bộ cột, không có WHERE.
Dòng báo cáo: index_skipped
foreign keys
khóa ngoại, nạp với FOREIGN_KEY_CHECKS=0
Các hàng nạp theo thứ tự bất kỳ, và khóa kiểm tra các hàng mới sau đó.
foreign keys to tables the dump doesn't create
không được tạo
Khóa không thể tham chiếu tới bảng không tồn tại.
Dòng báo cáo: foreign_key_skipped
partitioned tables
một bảng chứa các hàng của mọi phân vùng
Các hàng giữ nguyên; hãy phân vùng lại bảng trong MariaDB nếu cần.
Dòng báo cáo: partitions_dropped
schemas
một cơ sở dữ liệu, mỗi bảng có tên schema ở đầu
Schema của MariaDB là cơ sở dữ liệu, thứ mà tập lệnh nạp vào một cơ sở dữ liệu không tạo được; bảng trong public giữ tên.
Dòng báo cáo: schemas_merged
views, functions, procedures, triggers, rules, policies, extensions and types
được liệt kê trong báo cáo
Mã của chúng viết bằng ngôn ngữ của PostgreSQL, nên được liệt kê để bạn tạo lại.
Dòng báo cáo: not_converted_objects
dumps without CREATE TABLE (--data-only)
kiểu suy ra từ giá trị
Bản dump chỉ có dữ liệu thì chỉ có các hàng, nên kiểu được suy ra từ giá trị.
Dòng báo cáo: no_schema
expressions in INSERT values
NULL
Trình chuyển đổi không chạy cơ sở dữ liệu thì không tính được chúng.
Dòng báo cáo: expression_value
types IntoSQL doesn't know
longtext
Văn bản chứa được mọi giá trị; hãy đổi kiểu sau khi nạp.
Dòng báo cáo: unknown_type
text that isn't valid in its encoding
byte lỗi thành ký tự thay thế
Văn bản phải là utf8mb4 hợp lệ.
Dòng báo cáo: invalid_utf8_replaced
text decoded twice (ñ)
sao chép nguyên trạng
Bản dump chứa đúng các ký tự này, nên chúng được sao chép; báo cáo chỉ ra chúng.
Dòng báo cáo: mojibake_suspected
| Trong PostgreSQL | Trong MariaDB | Dòng báo cáo |
|---|---|---|
| boolean | tinyint(1)BOOLEAN của MariaDB là TINYINT(1): true là 1 và false là 0. | |
| varchar(n), char(n), text | varchar(n) đến 1024 ký tự, char(n) đến 255, dài hơn là textVăn bản giữ mọi ký tự dưới dạng utf8mb4. Cột trong khóa tối đa là varchar(768), độ dài lớn nhất một khóa chứa được. | |
| numeric(p,s) past 65 digits or 30 decimals, and numeric values past what decimal(65,30) holds | varchardecimal của MariaDB chứa 65 chữ số với 30 chữ số thập phân. Số rộng hơn được giữ dạng văn bản để mọi chữ số vẫn chính xác; numeric không có độ chính xác là decimal(65,30) khi giá trị vừa. | decimal_as_text |
| money | decimal(19,2)MariaDB không có kiểu tiền tệ. Số tiền được giữ dạng số, không kèm ký hiệu tiền tệ mà locale của máy chủ đã thêm. | type_replaced |
| interval | varchar(100) với văn bản của PostgreSQLTIME của MariaDB chứa khoảng thời gian đến 838 giờ, nhưng interval có tháng và ngày; văn bản của nó giữ mọi phần. | type_replaced |
| arrays (integer[], text[]...) | mảng jsonMariaDB không có mảng. Mảng JSON giữ mọi phần tử và NULL, và các hàm JSON đọc được nó. | type_replaced |
| ranges, geometric types, tsvector, xml, hstore, composite and extension types | longtext với văn bản của PostgreSQLMariaDB không có kiểu tương đương, nên mỗi giá trị giữ văn bản PostgreSQL đã ghi. | type_replaced |
| json, jsonb | jsonCùng các giá trị JSON; thứ tự khóa và khoảng trắng của jsonb là do máy chủ. | |
| timestamp | datetime(p)timestamp không có múi giờ là thời gian theo đồng hồ, giống datetime. | |
| timestamp with time zone | datetime(p) theo UTCTIMESTAMP của MariaDB chỉ đến năm 2038, nên thời điểm được lưu dạng datetime theo UTC, cùng một thời điểm dù bản dump ghi độ lệch nào. | moments_as_utc |
| time | time(p)TIME của MariaDB chứa mọi giờ trong ngày, kể cả 24:00:00. | |
| infinity, -infinity, BC dates and years past 9999 | NULLMariaDB lưu năm từ 1000 đến 9999, không có vô cực. Các giá trị đó trở thành NULL và báo cáo đếm số lượng. | date_out_of_range |
| NaN and Infinity in numeric, real and double precision | NULLSố của MariaDB không có NaN hay Infinity, nên các giá trị đó trở thành NULL và báo cáo đếm số lượng. | invalid_value_null |
| NOT NULL columns with values that become NULL | bỏ NOT NULLCột có giá trị phải chuyển thành NULL không thể giữ NOT NULL, nếu không quá trình nạp sẽ dừng. | not_null_relaxed |
| enum types | enum(...) với cùng các nhãnENUM của MariaDB giữ các nhãn theo thứ tự của chúng. | |
| uuid, inet, cidr | uuid dạng uuid, inet và cidr dạng varchar(43)MariaDB có kiểu uuid; địa chỉ giữ văn bản, kể cả mặt nạ. | |
| bytea | blob, mediumblob hoặc longblob; varbinary(3072) trong khóaByte vẫn là byte. | |
| bit(n) | bit(n) đến 64, dài hơn là textChuỗi bit đến 64 bit là số do các bit tạo thành; chuỗi dài hơn giữ các chữ số của nó. | |
| citext and nondeterministic collations | so sánh chính xácBảng dùng utf8mb4_bin để văn bản được so sánh chính xác, như PostgreSQL; cột không phân biệt hoa thường trong nguồn sẽ mất điều đó. | case_insensitive_collation |
| serial, identity | AUTO_INCREMENT, tiếp tục sau id lớn nhấtCột đứng đầu khóa chính được đếm; bộ đếm tiếp tục từ chỗ sequence dừng lại. | |
| a second serial or identity column in a table | số nguyên thườngMariaDB đếm một cột mỗi bảng; cột khác giữ giá trị mà không có bộ đếm. | counter_dropped |
| sequences not owned by a column | CREATE SEQUENCE, ở giá trị sẽ cấp tiếp theoSequence của MariaDB hoạt động theo cùng cách. | |
| generated columns | cột tính toán, STORED như trong nguồnMariaDB tính chúng theo cùng cách. | |
| generated columns with functions MariaDB lacks | một cột thườngCông thức không viết được cho MariaDB để lại một cột thường và một dòng trong báo cáo. | generated_not_translated |
| defaults with functions MariaDB lacks, and defaults from a sequence | không có giá trị mặc địnhGiá trị mặc định không viết được cho MariaDB sẽ bị bỏ và được báo cáo. | default_not_translated |
| CHECK constraints | được chuyển đổi, viết trực tiếp trong CREATE TABLEMySQL 8.0.16 và MariaDB áp dụng chúng; MySQL 5.7 giữ chúng nhưng không kiểm tra. | |
| CHECK constraints with functions MariaDB lacks | không được tạoRàng buộc kiểm tra không viết được cho MariaDB sẽ bị bỏ và được báo cáo. | check_skipped |
| CHECK ... NOT VALID | không được tạoPostgreSQL chưa bao giờ kiểm tra các hàng có từ trước, nên chúng có thể vi phạm ràng buộc. | check_not_valid |
| gin, gist, brin and hash indexes, partial and expression indexes | không được tạoMariaDB chỉ có chỉ mục b-tree, toàn văn và không gian, trên toàn bộ cột, không có WHERE. | index_skipped |
| foreign keys | khóa ngoại, nạp với FOREIGN_KEY_CHECKS=0Các hàng nạp theo thứ tự bất kỳ, và khóa kiểm tra các hàng mới sau đó. | |
| foreign keys to tables the dump doesn't create | không được tạoKhóa không thể tham chiếu tới bảng không tồn tại. | foreign_key_skipped |
| partitioned tables | một bảng chứa các hàng của mọi phân vùngCác hàng giữ nguyên; hãy phân vùng lại bảng trong MariaDB nếu cần. | partitions_dropped |
| schemas | một cơ sở dữ liệu, mỗi bảng có tên schema ở đầuSchema của MariaDB là cơ sở dữ liệu, thứ mà tập lệnh nạp vào một cơ sở dữ liệu không tạo được; bảng trong public giữ tên. | schemas_merged |
| views, functions, procedures, triggers, rules, policies, extensions and types | được liệt kê trong báo cáoMã của chúng viết bằng ngôn ngữ của PostgreSQL, nên được liệt kê để bạn tạo lại. | not_converted_objects |
| dumps without CREATE TABLE (--data-only) | kiểu suy ra từ giá trịBản dump chỉ có dữ liệu thì chỉ có các hàng, nên kiểu được suy ra từ giá trị. | no_schema |
| expressions in INSERT values | NULLTrình chuyển đổi không chạy cơ sở dữ liệu thì không tính được chúng. | expression_value |
| types IntoSQL doesn't know | longtextVăn bản chứa được mọi giá trị; hãy đổi kiểu sau khi nạp. | unknown_type |
| text that isn't valid in its encoding | byte lỗi thành ký tự thay thếVăn bản phải là utf8mb4 hợp lệ. | invalid_utf8_replaced |
| text decoded twice (ñ) | sao chép nguyên trạngBản dump chứa đúng các ký tự này, nên chúng được sao chép; báo cáo chỉ ra chúng. | mojibake_suspected |
Nạp tập lệnh vào MariaDB
Tập lệnh tạo bảng, sao chép các hàng, rồi thêm khóa, chỉ mục và khóa ngoại, nên nạp nhanh và dừng ở lỗi đầu tiên.
mariadb --default-character-set=utf8mb4 mydb < postgresql.mariadb.sqlKhóa ngoại được tạo đúng như bản dump khai báo, với FOREIGN_KEY_CHECKS=0 trong khi nạp các hàng, như mysqldump.
Với bản dump lớn, hãy chạy client trên cùng máy với máy chủ, và tăng max_allowed_packet nếu một hàng rất lớn.
IntoSQL Pro nạp tệp thẳng vào MariaDB từ ứng dụng máy tính hoặc dòng lệnh, không cần tạo tập lệnh.
Tạo bản dump PostgreSQL để có kết quả tốt nhất
Trình chuyển đổi đọc những gì bản dump chứa. Các tùy chọn sau giữ lại nhiều dữ liệu hơn trong đó:
- --format=plain, mặc định của pg_dump, ghi ra SQL. Kho lưu trữ custom hoặc directory (-Fc, -Fd) thành SQL bằng pg_restore -f dump.sql, không cần máy chủ cơ sở dữ liệu.
- --no-owner --no-privileges bỏ vai trò và quyền, những thứ trình chuyển đổi vốn bỏ qua, nên bản dump nhỏ hơn.
- pg_dumpall dump mọi cơ sở dữ liệu vào một tệp; bảng của mỗi cơ sở dữ liệu có tên của nó ở đầu, nên không có gì trùng.
Những gì không được chuyển đổi
Khung nhìn, khung nhìn cụ thể hóa, hàm, thủ tục, trình kích hoạt, quy tắc, chính sách bảo mật cấp hàng, tiện ích mở rộng và kiểu được viết bằng ngôn ngữ riêng của PostgreSQL. Chúng được liệt kê theo tên trong báo cáo, không bao giờ bị bỏ âm thầm, để bạn viết lại cho MariaDB.
Câu hỏi về PostgreSQL sang MariaDB
Chưa có câu trả lời ở đây? Hãy viết cho chúng tôi từ trang liên hệ, sẽ có người trả lời. Trang liên hệ
Bản dump của tôi có bị tải lên không?
Không. Trình chuyển đổi chạy trong trình duyệt và đọc bản dump từ ổ đĩa theo từng phần, nên nó không bao giờ rời khỏi máy tính của bạn. Ứng dụng máy tính và dòng lệnh cũng chuyển đổi ngay trên máy tính của bạn.
Bản dump có thể lớn đến đâu?
Trình chuyển đổi không bao giờ giữ toàn bộ bản dump trong bộ nhớ: nó đọc tệp hai lần, theo từng đoạn, và ghi tập lệnh trong lúc đọc. Bản dump nhiều gigabyte vẫn chuyển đổi được trong trình duyệt, trong ứng dụng máy tính và bằng dòng lệnh.
Nó có đọc được kho lưu trữ pg_dump -Fc không?
Không trực tiếp: kho lưu trữ custom là định dạng nhị phân. pg_restore -f dump.sql dump.backup chuyển nó thành SQL dạng plain mà trình chuyển đổi đọc được, không cần kết nối máy chủ. Trình chuyển đổi sẽ báo khi nhận một kho lưu trữ.
Bản dump có thể đến từ những phiên bản PostgreSQL nào?
Bản dump do pg_dump và pg_dumpall ghi từ PostgreSQL 10 trở lên, với các hàng COPY hoặc INSERT. Mọi bản dump thử nghiệm đến từ PostgreSQL 13 và 18 và được so với nguồn từng ô một.
Giá trị serial và identity có được giữ không?
Có, cho một cột mỗi bảng: cột serial hoặc identity đứng đầu khóa chính trở thành AUTO_INCREMENT và tiếp tục sau id lớn nhất. Sequence không thuộc cột nào thành sequence MariaDB ở giá trị đã đạt tới.
Mảng, enum và các kiểu PostgreSQL khác sẽ ra sao?
Mảng thành mảng JSON, boolean thành tinyint(1), enum thành ENUM với cùng nhãn, uuid thành UUID, và money thành decimal. Range, kiểu hình học, hstore và kiểu composite giữ văn bản của PostgreSQL, và báo cáo cho biết những cột nào.
Còn hàm, trình kích hoạt và khung nhìn thì sao?
Chúng được liệt kê theo tên trong báo cáo và không được chuyển đổi, vì mỗi cơ sở dữ liệu viết chúng bằng ngôn ngữ riêng.
Tập lệnh nạp được trên những phiên bản MariaDB nào?
MariaDB 10.11 trở lên. Mọi bản dump thử nghiệm đều nạp được trên 10.11 và 11.4, và dừng ở lỗi đầu tiên nếu có sự cố.