Panduan Migrasi MySQL ke GBase

WBOY
Lepaskan: 2024-07-17 05:58:08
asal
685 orang telah melayarinya

MySQL to GBase Migration Guide

Artikel ini menyediakan panduan ringkas untuk memindahkan sistem aplikasi berdasarkan pangkalan data MySQL ke pangkalan data GBase (GBase 8c). Untuk mendapatkan maklumat terperinci tentang aspek khusus kedua-dua pangkalan data, pembaca boleh merujuk kepada dokumentasi rasmi MySQL (https://dev.mysql.com/doc/) dan manual pengguna GBase 8c. Disebabkan kandungan meluas yang terlibat dalam pemetaan asas jenis data MySQL dan aspek lain proses migrasi, ini tidak akan dibincangkan secara terperinci dalam artikel ini. Jika berminat, sila tinggalkan komen, dan kita boleh membincangkannya pada masa akan datang.

1. Mencipta Pangkalan Data

Dalam kedua-dua MySQL dan GBase 8c, pernyataan CREATE DATABASE digunakan untuk mencipta pangkalan data. Perbezaan sintaks khusus adalah seperti berikut:

Operation MySQL SQL Statement GBase 8c SQL Statement
CREATE DATABASE CREATE DATABASE example CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE DATABASE example OWNER gbase ENCODING ‘UTF8’ LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';

Pertimbangan untuk Memindahkan Pernyataan SQL untuk Mencipta Pangkalan Data:

(1) Dalam kedua-dua MySQL dan GBase 8c, anda boleh menentukan set aksara dan peraturan penyusunan semasa membuat pangkalan data.

Tidak seperti MySQL, dalam GBase 8c, kata kunci ENCODING digunakan untuk menentukan set aksara, dan kata kunci LC_COLLATE dan LC_CTYPE digunakan untuk menentukan peraturan pengumpulan:

  • LC_COLLATE: Parameter ini mempengaruhi susunan pengisihan rentetan (cth., apabila menggunakan ORDER BY, serta susunan indeks pada lajur teks).

  • LC_CTYPE: Parameter ini mempengaruhi klasifikasi aksara, seperti huruf besar, huruf kecil dan digit.

(2) Apabila mencipta pangkalan data dalam GBase 8c, anda juga boleh menentukan atribut tambahan yang unik. Atribut biasa termasuk:

  • PEMILIK: Parameter ini menentukan pemilik pangkalan data. Jika tidak dinyatakan, pemilik lalai kepada pengguna semasa.

  • HAD SAMBUNGAN: Parameter ini menentukan bilangan sambungan serentak yang boleh diterima oleh pangkalan data. Pentadbir sistem tidak tertakluk kepada had ini.

(3) Struktur Pangkalan Data

Dalam MySQL, pangkalan data dan skema adalah sinonim, dan pangkalan data boleh merujuk antara satu sama lain. Dalam GBase 8c, pangkalan data dan skema adalah objek yang berbeza. Satu pangkalan data boleh mengandungi berbilang skema dan pangkalan data tidak boleh merujuk antara satu sama lain, tetapi skema dalam pangkalan data yang sama boleh.

2. Menggunakan Pangkalan Data

Perbandingan pelbagai pernyataan SQL untuk mengendalikan pangkalan data:

Operasi Pernyataan SQL SQL Pernyataan SQL GBase 8c Alat gsql GBase 8c
Operation MySQL SQL Statement GBase 8c SQL Statement GBase 8c gsql Tool
View Databases SHOW DATABASES; or SHOW DATABASE example; SELECT * FROM pg_database; l or l+
Switch Database USE example; Reconnect to switch, this function does not use SQL to switch c example
Delete Database DROP DATABASE example; DROP DATABASE example; None
Lihat Pangkalan Data TUNJUKKAN PANGKALAN DATA; atau TUNJUKKAN contoh PANGKALAN DATA; PILIH * DARI pg_database; l atau l+ Tukar Pangkalan Data GUNAKAN contoh; Sambung semula untuk menukar, fungsi ini tidak menggunakan SQL untuk menukar c contoh Padam Pangkalan Data DROP DATABASE contoh; DROP DATABASE contoh; Tiada

3. Mencipta Jadual

Kedua-dua MySQL dan GBase 8c menyokong membuat jadual menggunakan pernyataan CREATE TABLE. Perbezaan sintaks khusus adalah seperti berikut:

Operation MySQL SQL Statement GBase 8c SQL Statement
Creating Tables using CREATE TABLE CREATE TABLE `my_table` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_id` int NOT NULL COMMENT 'User id',
`name` varchar(50) DEFAULT NULL COMMENT 'Name',
`address` varchar(50) DEFAULT NULL COMMENT 'Address',
`password` varchar(20) DEFAULT 'passwd' COMMENT 'Password',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE "my_table" (
"id" SERIAL NOT NULL,
"user_id" int NOT NULL,
"name" varchar(50),
"address" varchar(50),
"passwd" varchar(20) DEFAULT 'password',
CONSTRAINT "my_table_pkey" PRIMARY KEY ("id")
);

COMMENT ON COLUMN "my_table"."id" IS 'id';
COMMENT ON COLUMN "my_table"."user_id" IS 'User id';
COMMENT ON COLUMN "my_table"."name" IS 'Name';
COMMENT ON COLUMN "my_table"."address" IS 'Address';
COMMENT ON COLUMN "my_table"."passwd" IS 'Password';
Creating Tables using CREATE TABLE ... LIKE create table `my_table_like` like `my_table`; create table my_table_like (like my_table);
Creating Tables using CREATE TABLE ... AS create table `my_table_as` as select * from `my_table`; create table my_table_as as select * from my_table ;

Apabila memindahkan pernyataan SQL untuk mencipta jadual, perubahan sintaks berikut diperlukan:

(1) Peraturan Penamaan dan Sensitiviti Kes
Dalam MySQL, pangkalan data, jadual dan nama medan disertakan dalam tanda belakang (``) untuk menandakan. Ini tidak dibenarkan dalam GBase 8c; sebaliknya, GBase 8c menggunakan sama ada petikan berganda atau tiada tanda langsung.

Dalam GBase 8c, jika nama jadual dan medan tidak disertakan dalam petikan berganda, ia secara automatik ditukar kepada huruf kecil apabila jadual dibuat. Jika anda perlu menyatakan nama huruf besar, anda mesti menyertakan nama dalam petikan berganda.

(2) Perubahan Berkaitan Enjin Storan

  • Apabila berhijrah ke GBase 8c, anda perlu mengalih keluar klausa berkaitan enjin storan seperti ENGINE dan TYPE daripada pernyataan MySQL.

  • GBase 8c tidak menyokong tetapan set aksara pada tahap jadual, jadi klausa CHARSET dalam pernyataan MySQL harus dialih keluar apabila berhijrah ke GBase 8c.

(3) BUAT MEJA SEPERTI
GBase 8c juga menyokong sintaks CREATE TABLE LIKEAS, tetapi penggunaan klausa LIKE berbeza daripada MySQL. Dalam GBase 8c, klausa LIKE mesti disertakan dalam "()", dan ia tidak menyalin anotasi KOMEN secara automatik daripada lajur jadual asal.

4. Kenyataan Berkaitan Lihat

Pandangan sokongan MySQL dan GBase 8c, dan kaedah penciptaan asas adalah serupa. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa dalam GBase 8c, di bawah peraturan lalai, mengubah suai data secara langsung dalam paparan tidak disokong.

Operasi Pernyataan SQL SQL Pernyataan SQL GBase 8c
Operation MySQL SQL Statement GBase 8c SQL Statement
Creating a View CREATE VIEW v_my_table AS SELECT * FROM my_table; CREATE VIEW v_my_table AS SELECT * FROM my_table;
Modifying Data Through a View INSERT INTO v_my_table(user_id, name, address) VALUES(2222, 'bbb', 'xxxx'); Supported, but requires adjusting the default RULE
Dropping a View DROP VIEW v_my_table; DROP VIEW v_my_table;
Membuat Paparan BUAT LIHAT v_my_table SEBAGAI PILIH * DARI my_table; BUAT LIHAT v_my_table SEBAGAI PILIH * DARI my_table;

Mengubah suai Data Melalui Paparan

MASUKKAN KE DALAM v_my_table(user_id, name, address) VALUES(2222, 'bbb', 'xxxx'); Disokong, tetapi memerlukan pelarasan PERATURAN lalai

Melepaskan Paparan

DOP VIEW v_my_table; DOP VIEW v_my_table;
Operation MySQL SQL Statement GBase 8c SQL Statement
Creating Index CREATE INDEX i_user_id USING BTREE ON my_table (user_id);
or
CREATE INDEX i_user_id ON my_table (user_id) USING BTREE;
CREATE INDEX i_user_id ON my_table USING BTREE (user_id);
Dropping Index DROP INDEX i_user_id ON my_table; DROP INDEX i_user_id;
5. Penyata Berkaitan Indeks Kedua-dua MySQL dan GBase 8c menyokong fungsi pengindeksan, tetapi terdapat sedikit perbezaan dalam operasi penciptaan dan pemadaman. Perbezaan sintaks asas adalah seperti berikut: Operasi Pernyataan SQL SQL Pernyataan SQL GBase 8c Mencipta Indeks CIPTA INDEX i_user_id MENGGUNAKAN BTREE PADA my_table (user_id); atau BUAT INDEX i_user_id PADA my_table (user_id) MENGGUNAKAN BTREE; BUAT INDEX i_user_id PADA my_table MENGGUNAKAN BTREE (user_id); Indeks Jatuh JATUHKAN INDEX i_user_id PADA my_table; DROP INDEX i_user_id;

Points d'attention pour la migration des instructions de création et de suppression d'index :

(1) Position de USING index_type
Dans MySQL, la clause USING index_type peut apparaître avant ou après la clause table_name(col_name), comme indiqué :

... EN UTILISANT index_type table_name(col_name) ...

OU

... table_name(col_name) EN UTILISANT index_type ...

Cependant, dans GBase 8c, la clause USING index_type doit être placée au milieu de la clause table_name(col_name) :

... nom_table USING type_index (nom_col) ...

(2) DÉPOSER L'INDEX SUR la table
Dans GBase 8c, lors de la suppression d'un objet d'index, vous n'avez pas besoin de spécifier la clause ON table. Cette clause doit être supprimée lors de la migration.

(3) Autres propriétés
GBase 8c ne prend pas en charge les propriétés FULLTEXT et SPATIAL lors de la création d'objets d'index. Ces propriétés doivent être supprimées lors de la migration.

Atas ialah kandungan terperinci Panduan Migrasi MySQL ke GBase. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan