İçeriğe geç
IntoSQL ana sayfası

MySQL - Oracle dönüştürme

mysqldump, mariadb-dump, mysqlpump, phpMyAdmin veya Adminer ile alınmış bir dökümü .sql veya .sql.gz olarak bırakın ve aynı tablolar, anahtarlar, indeksler ve verilerle bir Oracle betiği indirin. Oracle tarafından olduğu gibi tutulamayan her değer ve taşınmayan her nesne raporda listelenir.

Dosyanız
sqlshop_2024.sqlÖrnek dosya, 5,1 kB
Veritabanınız

18 satır dönüştürüldü, 4 düzeltme, reddedilen yok

Göster

shop_2024.sql içindeki tablolarMySQL 8.0.46 dökümü · mysqldump ile yazıldı · utf8mb4

  • customersCUSTOMERS olarak yazıldı8 satır2
    7 sütun
    IDNUMBER(10) not null
    NAMEVARCHAR2(100 CHAR) not null
    EMAILVARCHAR2(150 CHAR) not null
    COUNTRYVARCHAR2(2 CHAR) not null
    IS_ACTIVENUMBER(1) not null
    SIGNED_UPDATE
    CREATED_ATTIMESTAMP(0) WITH TIME ZONE not null
  • ordersORDERS olarak yazıldı10 satır2
    9 sütun
    IDNUMBER(10) not null
    CUSTOMER_IDNUMBER(10) not null
    STATUSVARCHAR2(9 CHAR)
    TOTALNUMBER(10,2) not null
    ITEMSNUMBER(5) not null
    ORDERED_ATTIMESTAMP(0) not null
    SHIPPED_ATTIMESTAMP(0)
    NOTEVARCHAR2(255 CHAR)
    UPDATED_ATTIMESTAMP(0) WITH TIME ZONE not null
-- Written by IntoSQL from a MySQL dump. Load it with: NLS_LANG=.AL32UTF8 sqlplus -S -L <user>/<password>@<database> @<file>
WHENEVER SQLERROR EXIT FAILURE ROLLBACK;
SET DEFINE OFF;
SET SQLBLANKLINES ON;
SET FEEDBACK OFF;
SET SERVEROUTPUT ON;
CREATE OR REPLACE FUNCTION "INTOSQL_CLOB" (p SYS.ODCIVARCHAR2LIST) RETURN CLOB IS
    r CLOB;
BEGIN
    DBMS_LOB.CREATETEMPORARY(r, TRUE);
    FOR i IN 1 .. p.COUNT LOOP
        IF p(i) IS NOT NULL THEN
            DBMS_LOB.WRITEAPPEND(r, LENGTH2(p(i)), p(i));
        END IF;
    END LOOP;
    RETURN r;
END;
/
CREATE OR REPLACE FUNCTION "INTOSQL_BLOB" (p SYS.ODCIVARCHAR2LIST) RETURN BLOB IS
    r BLOB;
    piece RAW(2000);
BEGIN
    DBMS_LOB.CREATETEMPORARY(r, TRUE);
    FOR i IN 1 .. p.COUNT LOOP
        piece := HEXTORAW(p(i));
        DBMS_LOB.WRITEAPPEND(r, UTL_RAW.LENGTH(piece), piece);
    END LOOP;
    RETURN r;
END;
/

CREATE TABLE "CUSTOMERS" (
    "ID" NUMBER(10) GENERATED BY DEFAULT ON NULL AS IDENTITY (START WITH 1001),
    "NAME" VARCHAR2(100 CHAR) NOT NULL,
    "EMAIL" VARCHAR2(150 CHAR) NOT NULL,
    "COUNTRY" VARCHAR2(2 CHAR) DEFAULT 'US' NOT NULL,
    "IS_ACTIVE" NUMBER(1) DEFAULT 1 NOT NULL,
    "SIGNED_UP" DATE,
    "CREATED_AT" TIMESTAMP(0) WITH TIME ZONE DEFAULT SYSTIMESTAMP NOT NULL,
    CONSTRAINT "CK_CUSTOMERS_ID" CHECK ("ID" >= 0),
    CONSTRAINT "CK_CUSTOMERS_IS_ACTIVE" CHECK ("IS_ACTIVE" IN (0, 1))
);

CREATE TABLE "ORDERS" (
    "ID" NUMBER(10) GENERATED BY DEFAULT ON NULL AS IDENTITY (START WITH 5001),
    "CUSTOMER_ID" NUMBER(10) NOT NULL,
    "STATUS" VARCHAR2(9 CHAR) DEFAULT 'pending',
    "TOTAL" NUMBER(10,2) NOT NULL,
    "ITEMS" NUMBER(5) DEFAULT 1 NOT NULL,
    "ORDERED_AT" TIMESTAMP(0) NOT NULL,
    "SHIPPED_AT" TIMESTAMP(0),
    "NOTE" VARCHAR2(255 CHAR),
    "UPDATED_AT" TIMESTAMP(0) WITH TIME ZONE DEFAULT SYSTIMESTAMP NOT NULL,
    CONSTRAINT "CK_ORDERS_ID" CHECK ("ID" >= 0),
    CONSTRAINT "CK_ORDERS_CUSTOMER_ID" CHECK ("CUSTOMER_ID" >= 0),
    CONSTRAINT "CK_ORDERS_STATUS" CHECK ("STATUS" IN ('pending', 'paid', 'shipped', 'cancelled')),
    CONSTRAINT "CK_ORDERS_ITEMS" CHECK ("ITEMS" >= 0)
);

BEGIN
INSERT INTO "CUSTOMERS" (
"ID",
"NAME",
"EMAIL",
"COUNTRY",
"IS_ACTIVE",
"SIGNED_UP",
"CREATED_AT"
) VALUES (
1,
'Ana Martínez',
'ana@example.com',
'MX',
1,
DATE '2023-01-15',
TIMESTAMP '2023-01-15 10:24:00 +00:00'
);
INSERT INTO "CUSTOMERS" (
"ID",
"NAME",
"EMAIL",
"COUNTRY",
"IS_ACTIVE",
"SIGNED_UP",
"CREATED_AT"
) VALUES (
2,
'Zoë Müller',
'zoe@example.de',
'DE',
1,
DATE '2023-02-03',
TIMESTAMP '2023-02-03 08:11:42 +00:00'
);
INSERT INTO "CUSTOMERS" (
"ID",
"NAME",
"EMAIL",
"COUNTRY",
"IS_ACTIVE",
"SIGNED_UP",
"CREATED_AT"
) VALUES (
3,
'José Peña',
'jose@example.es',
'ES',
0,
DATE '2023-03-21',
TIMESTAMP '2023-03-21 19:05:17 +00:00'
);
INSERT INTO "CUSTOMERS" (
"ID",
"NAME",
"EMAIL",
"COUNTRY",
"IS_ACTIVE",
"SIGNED_UP",
"CREATED_AT"
) VALUES (
4,
'李雷',
'lilei@example.cn',
'CN',
1,
DATE '2023-05-09',
TIMESTAMP '2023-05-09 02:40:00 +00:00'
);
INSERT INTO "CUSTOMERS" (
"ID",
"NAME",
"EMAIL",
"COUNTRY",
"IS_ACTIVE",
"SIGNED_UP",
"CREATED_AT"
) VALUES (
5,
'Noah O''Brien',
'noah@example.ie',
'IE',
1,
NULL,
TIMESTAMP '2023-06-30 14:00:00 +00:00'
);
INSERT INTO "CUSTOMERS" (
"ID",
"NAME",
"EMAIL",
"COUNTRY",
"IS_ACTIVE",
"SIGNED_UP",
"CREATED_AT"
) VALUES (
6,
'Amélie Laurent',
'amelie@example.fr',
'FR',
1,
DATE '2024-01-02',
TIMESTAMP '2024-01-02 09:30:00 +00:00'
);
INSERT INTO "CUSTOMERS" (
"ID",
"NAME",
"EMAIL",
"COUNTRY",
"IS_ACTIVE",
"SIGNED_UP",
"CREATED_AT"
) VALUES (
7,
'Ravi Patel',
'ravi@example.in',
'IN',
0,
DATE '2024-02-29',
TIMESTAMP '2024-02-29 23:59:59 +00:00'
);
INSERT INTO "CUSTOMERS" (
"ID",
"NAME",
"EMAIL",
"COUNTRY",
"IS_ACTIVE",
"SIGNED_UP",
"CREATED_AT"
) VALUES (
8,
'Sofia Rossi 🌻',
'sofia@example.it',
'IT',
1,
DATE '2024-04-12',
TIMESTAMP '2024-04-12 12:12:12 +00:00'
);
COMMIT;
END;
/
BEGIN
INSERT INTO "ORDERS" (
"ID",
"CUSTOMER_ID",
"STATUS",
"TOTAL",
"ITEMS",
"ORDERED_AT",
"SHIPPED_AT",
"NOTE",
"UPDATED_AT"
) VALUES (
1,
1,
'shipped',
129.90,
3,
TIMESTAMP '2024-03-01 10:00:00',
TIMESTAMP '2024-03-02 16:30:00',
NULL,
TIMESTAMP '2024-03-02 16:30:00 +00:00'
);
INSERT INTO "ORDERS" (
"ID",
"CUSTOMER_ID",
"STATUS",
"TOTAL",
"ITEMS",
"ORDERED_AT",
"SHIPPED_AT",
"NOTE",
"UPDATED_AT"
) VALUES (
2,
2,
'paid',
54.00,
1,
TIMESTAMP '2024-03-02 11:15:00',
NULL,
'Gift wrap 🎁',
TIMESTAMP '2024-03-02 11:20:00 +00:00'
);
INSERT INTO "ORDERS" (
"ID",
"CUSTOMER_ID",
"STATUS",
"TOTAL",
"ITEMS",
"ORDERED_AT",
"SHIPPED_AT",
"NOTE",
"UPDATED_AT"
) VALUES (
3,
1,
'cancelled',
12.50,
1,
TIMESTAMP '2024-03-03 09:45:00',
NULL,
'Customer changed their mind',
TIMESTAMP '2024-03-03 10:00:00 +00:00'
);
INSERT INTO "ORDERS" (
"ID",
"CUSTOMER_ID",
"STATUS",
"TOTAL",
"ITEMS",
"ORDERED_AT",
"SHIPPED_AT",
"NOTE",
"UPDATED_AT"
) VALUES (
4,
4,
'shipped',
980.00,
12,
TIMESTAMP '2024-03-05 02:10:00',
TIMESTAMP '2024-03-07 08:00:00',
'请小心轻放',
TIMESTAMP '2024-03-07 08:00:00 +00:00'
);
INSERT INTO "ORDERS" (
"ID",
"CUSTOMER_ID",
"STATUS",
"TOTAL",
"ITEMS",
"ORDERED_AT",
"SHIPPED_AT",
"NOTE",
"UPDATED_AT"
) VALUES (
5,
5,
'pending',
45.75,
2,
TIMESTAMP '2024-03-08 17:20:00',
NULL,
'Leave at the door; ring twice',
TIMESTAMP '2024-03-08 17:20:00 +00:00'
);
INSERT INTO "ORDERS" (
"ID",
"CUSTOMER_ID",
"STATUS",
"TOTAL",
"ITEMS",
"ORDERED_AT",
"SHIPPED_AT",
"NOTE",
"UPDATED_AT"
) VALUES (
6,
6,
'shipped',
310.40,
5,
TIMESTAMP '2024-03-10 13:00:00',
TIMESTAMP '2024-03-11 09:00:00',
'Fragile: "glass"',
TIMESTAMP '2024-03-11 09:00:00 +00:00'
);
INSERT INTO "ORDERS" (
"ID",
"CUSTOMER_ID",
"STATUS",
"TOTAL",
"ITEMS",
"ORDERED_AT",
"SHIPPED_AT",
"NOTE",
"UPDATED_AT"
) VALUES (
7,
8,
'paid',
76.20,
2,
TIMESTAMP '2024-03-11 18:45:00',
NULL,
NULL,
TIMESTAMP '2024-03-11 18:46:00 +00:00'
);
INSERT INTO "ORDERS" (
"ID",
"CUSTOMER_ID",
"STATUS",
"TOTAL",
"ITEMS",
"ORDERED_AT",
"SHIPPED_AT",
"NOTE",
"UPDATED_AT"
) VALUES (
8,
2,
NULL,
19.99,
1,
TIMESTAMP '2024-03-12 08:00:00',
NULL,
'Status lost in an old import',
TIMESTAMP '2024-03-12 08:00:00 +00:00'
);
INSERT INTO "ORDERS" (
"ID",
"CUSTOMER_ID",
"STATUS",
"TOTAL",
"ITEMS",
"ORDERED_AT",
"SHIPPED_AT",
"NOTE",
"UPDATED_AT"
) VALUES (
9,
3,
'shipped',
64.00,
2,
TIMESTAMP '2024-03-14 15:30:00',
NULL,
'Shipping date never recorded',
TIMESTAMP '2024-03-15 10:00:00 +00:00'
);
INSERT INTO "ORDERS" (
"ID",
"CUSTOMER_ID",
"STATUS",
"TOTAL",
"ITEMS",
"ORDERED_AT",
"SHIPPED_AT",
"NOTE",
"UPDATED_AT"
) VALUES (
10,
7,
'paid',
1499.00,
1,
TIMESTAMP '2024-03-15 21:05:00',
NULL,
'C:\Users\ravi\invoice.pdf',
TIMESTAMP '2024-03-15 21:05:00 +00:00'
);
COMMIT;
END;
/

-- Keys, indexes, foreign keys, counters and triggers, after the rows.
ALTER TABLE "CUSTOMERS" ADD CONSTRAINT "PK_CUSTOMERS" PRIMARY KEY ("ID");
ALTER TABLE "CUSTOMERS" ADD CONSTRAINT "UQ_CUSTOMERS_UQ_EMAIL" UNIQUE ("EMAIL");
ALTER TABLE "ORDERS" ADD CONSTRAINT "PK_ORDERS" PRIMARY KEY ("ID");
CREATE INDEX "IX_ORDERS_IDX_CUSTOMER" ON "ORDERS" ("CUSTOMER_ID");
CREATE INDEX "IX_ORDERS_IDX_STATUS_DATE" ON "ORDERS" ("STATUS", "ORDERED_AT");
ALTER TABLE "ORDERS" ADD CONSTRAINT "FK_ORDERS_CUSTOMER" FOREIGN KEY ("CUSTOMER_ID") REFERENCES "CUSTOMERS" ("ID") ENABLE NOVALIDATE;
BEGIN
    EXECUTE IMMEDIATE 'ALTER TABLE "ORDERS" ENABLE VALIDATE CONSTRAINT "FK_ORDERS_CUSTOMER"';
EXCEPTION
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('Foreign key ' || '"FK_ORDERS_CUSTOMER"' || ' has rows without a parent: it stays unvalidated, and new rows are checked.');
END;
/
DECLARE
    next_id NUMBER;
BEGIN
    SELECT NVL(MAX("ID"), 0) + 1 INTO next_id FROM "CUSTOMERS";
    IF next_id < 1001 THEN
        next_id := 1001;
    END IF;
    EXECUTE IMMEDIATE 'ALTER TABLE "CUSTOMERS" MODIFY ("ID" GENERATED BY DEFAULT ON NULL AS IDENTITY (START WITH ' || next_id || '))';
END;
/
COMMENT ON TABLE "CUSTOMERS" IS 'People who bought at least once';
DECLARE
    next_id NUMBER;
BEGIN
    SELECT NVL(MAX("ID"), 0) + 1 INTO next_id FROM "ORDERS";
    IF next_id < 5001 THEN
        next_id := 5001;
    END IF;
    EXECUTE IMMEDIATE 'ALTER TABLE "ORDERS" MODIFY ("ID" GENERATED BY DEFAULT ON NULL AS IDENTITY (START WITH ' || next_id || '))';
END;
/
CREATE OR REPLACE TRIGGER "TR_ORDERS_UPDATED_AT" BEFORE UPDATE ON "ORDERS" FOR EACH ROW
BEGIN
    IF NOT UPDATING('UPDATED_AT') THEN
        :NEW."UPDATED_AT" := SYSTIMESTAMP;
    END IF;
END;
/
DROP FUNCTION "INTOSQL_CLOB";
DROP FUNCTION "INTOSQL_BLOB";
COMMIT;
EXIT;

Düzeltmeler

  1. customers tablosunun "signed_up" sütunu artık NULL kabul ediyor: bazı değerleri saklanamadı ve NULL oldu.
  2. customers tablosundaki "signed_up" sütununun varsayılan değeri 0000‑00‑00, Oracle'in kabul ettiği bir tarih değil; bu yüzden sütunun varsayılan değeri yok.
  3. orders tablosunun "status" sütunu artık NULL kabul ediyor: bazı değerleri saklanamadı ve NULL oldu.
  4. orders tablosunun "updated_at" sütunu her güncellemede geçerli zamana ayarlanıyor; Oracle'de bunu bir tetikleyici yapıyor.

Kontrol edilmeli

  • customers tablosunun "signed_up" sütununda 0000‑00‑00 gibi 1 sıfır veya imkansız tarih var; Oracle bunları saklayamaz, bu yüzden NULL yapıldı. Bu tarihler bir anlam taşıyorsa döküm almadan önce kaynakta gerçek tarihlerle değiştirin.
  • orders tablosunun "shipped_at" sütununda 0000‑00‑00 00:00:00 gibi 1 sıfır veya imkansız tarih var; Oracle bunları saklayamaz, bu yüzden NULL yapıldı. Bu tarihler bir anlam taşıyorsa döküm almadan önce kaynakta gerçek tarihlerle değiştirin.
  • orders tablosunun "status" sütunundaki 1 boş değer NULL oldu; Oracle boş bir dizeyi NULL olarak saklar. Sorguların bu sütunu ' ile karşılaştırdığı yerlerde bunun yerine IS NULL kullanın.

Dosyan bu bilgisayarda dönüştürülür ve asla yüklenmez.

Diğer örnekler:

MySQL ile Oracle 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.

  • TINYINT(1), BOOL

    her değer 0 veya 1 ise 0 ve 1 CHECK'i ile NUMBER(1), değilse NUMBER(3)

    MySQL'in BOOL türü, -128 ile 127 arasında herhangi bir sayıyı tutabilen bir TINYINT(1)'dir. Oracle 23ai öncesinde boolean sütun yoktur, bu yüzden 0 ve 1'lerden oluşan bir sütun CHECK ile NUMBER(1) olur; 2 veya -1 tutan bir sütun sayılarını korur.

    Rapor satırı: bool_kept_numeric

  • UNSIGNED integers

    aralığa yetecek genişlikte NUMBER, negatif olmadığını denetleyen bir CHECK ile

    Oracle'ın NUMBER türü MySQL'deki genişliklerin her tam sayısını tutar; CHECK, MySQL'deki gibi negatif değerleri dışarıda tutar.

  • ZEROFILL and display widths

    kaldırılır

    Sıfır dolgusu bir sayının gösterilme biçimidir, sayının parçası değildir. Sayılar korunur; dolgu önemliyse okurken biçimlendirin.

    Rapor satırı: zerofill_dropped

  • FLOAT(M,D)

    ölçek olmadan BINARY_FLOAT veya BINARY_DOUBLE

    Oracle'ın ikili kayan noktalı sayılarının sabit ölçeği yoktur. Saklanan değerler olduğu gibi kopyalanır.

    Rapor satırı: float_scale_dropped

  • DECIMAL(p,s)

    38 basamağa kadar NUMBER(p,s); ötesi VARCHAR2

    Oracle'ın NUMBER türü 38 basamak tutar. Daha geniş ondalıklar her basamak tam kalsın diye metin olarak korunur.

    Rapor satırı: decimal_as_text

  • BIT(1), BIT(n)

    NUMBER(1), 63 bite kadar NUMBER(19), BIT(64) için NUMBER(20)

    Bit alanları, bitlerinin oluşturduğu sayı olarak saklanır.

  • zero, partial or impossible dates (0000-00-00, 2024-02-30)

    NULL

    Oracle yalnızca gerçek takvim tarihlerini saklar. MySQL, SQL modu izin verdiğinde sıfır ve imkansız tarihleri tutar; bunlar NULL olur ve rapor bunları sayar.

    Rapor satırı: invalid_date_null

  • NOT NULL columns with values that become NULL

    NOT NULL kaldırılır

    Boş dizeler dahil, 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

  • empty strings and empty binary values

    NULL

    Oracle boş bir dizeyi NULL olarak saklar, bu yüzden ' olan bir değer NULL olarak okunur. Rapor bunları sütun başına sayar.

    Rapor satırı: empty_string_null

  • DEFAULT '0000-00-00'

    varsayılan değer yok

    Oracle'ın saklayamadığı bir varsayılan değer, uydurma bir tarihle değiştirilmek yerine dışarıda bırakılır.

    Rapor satırı: zero_date_default

  • TIME

    süreleri tutan INTERVAL DAY TO SECOND

    Oracle'da günün saati türü yoktur ve MySQL'in TIME türü -838:59:59 ile 838:59:59 arasında bir süredir; bir interval her değeri tutar.

  • YEAR

    aralığını denetleyen bir CHECK ile NUMBER(4)

    Oracle'da yıl türü yoktur; CHECK, MySQL'in izin verdiği değerlerin aynısını korur.

  • CHAR(n), VARCHAR(n)

    karakter sayan VARCHAR2(n CHAR)

    Uzunluklar MySQL'deki gibi karakter sayar ve MySQL CHAR değerlerini sondaki boşluklar olmadan döndürür, VARCHAR2 da onları öyle korur.

  • VARCHAR(n) and TEXT longer than 4000 bytes

    CLOB

    Bir VARCHAR2 varsayılan olarak 4000 bayt tutar, bu yüzden daha uzun metin CLOB olur; tüm değerleri sığan bir sütun VARCHAR2 olarak kalır.

    Rapor satırı: text_as_lob

  • DATETIME

    TIMESTAMP

    DATETIME, TIMESTAMP gibi saat dilimi olmayan bir duvar saati okumasıdır. DATE, Oracle'ın DATE türüne dönüşür; bu tür gece yarısında kalan bir günün saatini de tutar.

  • TIMESTAMP

    dökümün belirttiği saat diliminde TIMESTAMP WITH TIME ZONE, belirtmiyorsa UTC

    TIMESTAMP bir andır. Dökümler değeri yazdıkları saat dilimini belirtir (mysqldump UTC yazar); bu bilgi yoksa değerler UTC olarak okunur ve rapor bunu belirtir.

    Rapor satırı: timestamp_zone_assumed

  • ENUM

    değerlerini denetleyen bir CHECK ile VARCHAR2

    CHECK ile metin aynı değerleri korur.

  • ENUM holding '' (MySQL's error value)

    NULL

    MySQL, esnek bir SQL modunda bir ENUM'a geçersiz bir değer girildiğinde boş bir dize saklar. Oracle bunu NULL olarak saklar, CHECK buna izin verir ve rapor onu diğer boş değerlerle birlikte sayar.

  • ENUM holding values outside its list

    CHECK yok

    Listede adı geçmeyen değerler CHECK'ten geçemez; bu yüzden CHECK oluşturulmaz.

    Rapor satırı: enum_check_skipped

  • SET

    MySQL'in yazdığı şekliyle VARCHAR2 ('a,b')

    Oracle'da küme türü yoktur; metin MySQL'in döndürdüğü metindir.

  • JSON

    CLOB

    Oracle'ın JSON fonksiyonları her sürümde JSON'u metinden okur ve bir CLOB her boyuttaki değeri tutar.

  • NUL bytes in text

    korunur

    VARCHAR2 ve CLOB bir NUL karakteri tutabilir, bu yüzden değer olduğu gibi kopyalanır.

  • text that isn't valid in its character set

    hatalı baytlar yerine koyma karakteri olarak

    Metnin VARCHAR2 olarak yazılabilmesi için karakter olarak okunması gerekir.

    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

  • AUTO_INCREMENT

    kopyalanan id'lerin ötesinden yeniden başlatılan GENERATED BY DEFAULT ON NULL AS IDENTITY

    Kopyalanan id'ler olduğu gibi yüklenir ve sayaç, en yüksek id'den veya dökümün AUTO_INCREMENT değerinden (hangisi büyükse) sonra devam eder.

  • MyISAM AUTO_INCREMENT on the second column of a key

    tablo için tek sayaç

    MyISAM, anahtarın ilk sütununun her grubu için ayrı sayar; Oracle'da tablo başına tek sayaç vardır.

    Rapor satırı: myisam_group_autoincrement

  • ON UPDATE CURRENT_TIMESTAMP

    bir BEFORE UPDATE tetikleyicisi

    Tetikleyici, bir güncelleme sütunu ayarlamadığında sütunu geçerli zamana ayarlar.

    Rapor satırı: on_update_trigger

  • generated columns

    sanal sütunlar

    Oracle üretilen sütunları yalnızca okurken hesaplar; STORED sütunlar aynı değerlerle sanal olur.

    Rapor satırı: stored_as_virtual

  • generated columns with functions Oracle lacks

    düz bir sütun

    Oracle 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

  • INVISIBLE columns

    INVISIBLE sütunlar

    Oracle, MySQL'deki gibi görünmez sütunları SELECT * sonucundan gizler.

  • CHECK constraints

    çevrilir, CREATE TABLE içinde satır içi

    Satır içi CHECK kısıtları her satır yüklenirken test edilir.

  • CHECK constraints with functions Oracle lacks

    oluşturulmaz

    Oracle 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 ENFORCED

    oluşturulmaz

    MySQL bu CHECK kısıtlarını uygulamadan tutar, bu yüzden satırlar onları ihlal edebilir.

    Rapor satırı: check_not_enforced

  • defaults with functions Oracle lacks

    varsayılan değer yok

    Oracle 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

  • keys and indexes on a prefix, c(20)

    sütunun SUBSTR'si üzerinde bir indeks

    Sütunun aynı başlangıcı üzerindeki bir fonksiyon indeksi aynı satırları birbirinden ayırır ve Oracle'ın tamamını indeksleyemediği CLOB sütunlarını indeksler.

    Rapor satırı: prefix_unique

  • FULLTEXT indexes

    oluşturulmaz

    Oracle Text tam metin aramayı kendi indeks türü ve sorgularıyla kurar.

    Rapor satırı: fulltext_not_created

  • SPATIAL indexes

    oluşturulmaz

    Geometriler WKB baytları olarak saklanır ve uzamsal indeks bunları okuyamaz.

    Rapor satırı: spatial_index_not_created

  • functional indexes, and indexes on whole CLOB or BLOB columns

    oluşturulmaz

    Oracle büyük bir nesneyi bütün olarak indeksleyemez ve bazı MySQL fonksiyonlarının Oracle karşılığı yoktur.

    Rapor satırı: index_skipped

  • foreign keys

    veriden sonra ENABLE NOVALIDATE, ardından yetim satırlar için uyarıyla doğrulanır

    Dökümler FOREIGN_KEY_CHECKS=0 ile yüklenir ve MyISAM hiç denetlemez, bu yüzden üst satırı olmayan satırlar yaygındır. Anahtar yeni satırları hemen denetler ve en son doğrulanır; yetim satırlar varsa yüklemeyi durdurmak yerine anahtar bir uyarıyla doğrulanmamış kalır.

  • ON UPDATE CASCADE, SET NULL or SET DEFAULT; ON DELETE SET DEFAULT

    kaldırılır

    Oracle'ın yabancı anahtarları yalnızca silmede, CASCADE veya SET NULL ile işlem yapar.

    Rapor satırı: foreign_key_action_unsupported

  • foreign keys to columns without a unique key

    oluşturulmaz

    Oracle, başvurulan sütunlarda bir birincil anahtar veya benzersiz bir kısıt ister; InnoDB istemez.

    Rapor satırı: foreign_key_skipped

  • table and column names

    düz adlarsa büyük harf, değilse yazıldığı gibi

    Oracle tırnaksız yazılan adları büyük harfle saklar; bu yüzden düz adlar büyük harfe çevrilir ve sorgular tırnakları atlayabilir; diğer adlar büyük/küçük harflerini korur ve tırnak gerektirir.

    Rapor satırı: identifier_renamed

  • names over 128 bytes

    kısaltılır

    Oracle 12.2 ve sonrasında adlar 128 bayt tutar.

    Rapor satırı: name_shortened

  • GEOMETRY, POINT, POLYGON...

    WKB tutan BLOB

    WKB, her uzamsal kütüphanenin okuduğu standart biçimdir; SDO_GEOMETRY, Oracle Spatial meta verilerini gerektirir.

    Rapor satırı: geometry_as_blob

  • INET4, INET6, UUID (MariaDB)

    VARCHAR2(39), VARCHAR2(36)

    Oracle'da bu türlerin hiçbiri yoktur; metin MariaDB'nin döndürdüğü metindir.

  • BINARY, VARBINARY, BLOB

    2000 bayta kadar RAW, değilse BLOB

    Baytlar bayt olarak kalır.

  • PARTITION BY

    tek tablo

    Satırlar aynıdır; gerekiyorsa tabloyu Oracle'da yeniden bölümleyin.

    Rapor satırı: partitions_dropped

  • WITH SYSTEM VERSIONING (MariaDB)

    mevcut satırları içeren bir tablo

    Döküm yalnızca mevcut satırları içerir.

    Rapor satırı: system_versioning_dropped

  • MyISAM, MEMORY and other engines

    normal bir tablo

    Oracle'ın tek bir tablo motoru vardır.

    Rapor satırı: engine_dropped

  • views, triggers, procedures, functions and events

    raporda listelenir

    Kodları MySQL'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

    değerlerden okunan türler

    --no-create-info ile alınan bir dökümde yalnızca satırlar vardır, bu yüzden türler değerlerden gelir.

    Rapor satırı: no_schema

  • geometries in a dump without CREATE TABLE

    WKB tutan BLOB

    MySQL'in geometri biçimi değerlerden tanınır ve standart WKB olarak saklanır.

    Rapor satırı: geometry_inferred

  • _ci collations

    tam karşılaştırma

    Oracle, aksi belirtilmedikçe metni tam olarak karşılaştırır.

    Rapor satırı: case_insensitive_collation

  • SET NAMES utf8 from utf8mb4 tables

    dönüştürülür, uyarıyla

    MySQL 5.x mysqldump varsayılan olarak 3 baytlık utf8 yazar ve herhangi bir dönüştürücü dosyayı görmeden önce her emojiyi soru işaretiyle değiştirir.

    Rapor satırı: dump_lost_four_byte_chars

  • dumps without SET NAMES whose text isn't UTF-8

    Latin-1 (Windows-1252) olarak okunur

    MySQL'in latin1 kodlaması Windows-1252'dir; bu tür dökümlerin olağan kodlamasıdır.

    Rapor satırı: charset_guessed

  • sjis, cp932, gbk, big5 dumps

    uyarıyla UTF-8 olarak okunur

    Bu kodlamalar henüz çözülmüyor.

    Rapor satırı: unsupported_charset

  • UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows

    hesaplanır

    Bazı döküm araçları değerleri bu çağrılar olarak yazar; bunlar ürettikleri değerler olarak okunur, coğrafi WKT'de boylam başa alınır.

  • other expressions in rows

    NULL

    Veritabanı çalıştırmayan bir dönüştürücü bunları hesaplayamaz.

    Rapor satırı: expression_value

  • DEFAULT in VALUES

    sütunun varsayılan değeri

    Sabit bir varsayılan değer satıra kopyalanır.

    Rapor satırı: default_keyword_filled

  • DEFAULT in VALUES without a literal default

    NULL

    Kopyalanacak bir değer yok.

    Rapor satırı: default_keyword_null

  • REPLACE and INSERT IGNORE

    düz satırlar

    Bir dökümde her anahtar için bir satır vardır, bu yüzden satırlar aynıdır.

    Rapor satırı: replace_as_insert

  • types IntoSQL doesn't know

    CLOB

    Metin her değeri tutar; yüklemeden sonra türü değiştirin.

    Rapor satırı: unknown_type

  • values that don't fit their column

    NULL

    Hasarlı veya elle yazılmış bir döküm, sütununun tutamayacağı değerler içerebilir; geri kalanın yüklenmesi için bunlar NULL olur.

    Rapor satırı: invalid_value_null

  • unreadable geometries

    NULL

    Geometri olmayan baytlar geometri olarak saklanamaz.

    Rapor satırı: bad_geometry

  • dumps of several databases

    tek şema, her tablonun adı önce veritabanının adıyla başlar

    Betik, onu çalıştıran kullanıcının şemasına yüklenir; bu yüzden farklı veritabanlarının tablolarının başına veritabanının adı eklenir.

    Rapor satırı: databases_merged

  • CREATE SEQUENCE (MariaDB)

    ulaştığı değerden CREATE SEQUENCE

    Oracle sequence nesneleri aynı şekilde çalışır.

  • VECTOR(n) (MariaDB 11.7+)

    float'ları JSON dizisi olarak tutan CLOB

    Yalnızca Oracle 23ai'de vektör türü vardır; bir JSON dizisi her sürümde her float'ı korur.

    Rapor satırı: type_replaced

MySQL içindeOracle içindeRapor satırı
TINYINT(1), BOOLher değer 0 veya 1 ise 0 ve 1 CHECK'i ile NUMBER(1), değilse NUMBER(3)MySQL'in BOOL türü, -128 ile 127 arasında herhangi bir sayıyı tutabilen bir TINYINT(1)'dir. Oracle 23ai öncesinde boolean sütun yoktur, bu yüzden 0 ve 1'lerden oluşan bir sütun CHECK ile NUMBER(1) olur; 2 veya -1 tutan bir sütun sayılarını korur.bool_kept_numeric
UNSIGNED integersaralığa yetecek genişlikte NUMBER, negatif olmadığını denetleyen bir CHECK ileOracle'ın NUMBER türü MySQL'deki genişliklerin her tam sayısını tutar; CHECK, MySQL'deki gibi negatif değerleri dışarıda tutar.
ZEROFILL and display widthskaldırılırSıfır dolgusu bir sayının gösterilme biçimidir, sayının parçası değildir. Sayılar korunur; dolgu önemliyse okurken biçimlendirin.zerofill_dropped
FLOAT(M,D)ölçek olmadan BINARY_FLOAT veya BINARY_DOUBLEOracle'ın ikili kayan noktalı sayılarının sabit ölçeği yoktur. Saklanan değerler olduğu gibi kopyalanır.float_scale_dropped
DECIMAL(p,s)38 basamağa kadar NUMBER(p,s); ötesi VARCHAR2Oracle'ın NUMBER türü 38 basamak tutar. Daha geniş ondalıklar her basamak tam kalsın diye metin olarak korunur.decimal_as_text
BIT(1), BIT(n)NUMBER(1), 63 bite kadar NUMBER(19), BIT(64) için NUMBER(20)Bit alanları, bitlerinin oluşturduğu sayı olarak saklanır.
zero, partial or impossible dates (0000-00-00, 2024-02-30)NULLOracle yalnızca gerçek takvim tarihlerini saklar. MySQL, SQL modu izin verdiğinde sıfır ve imkansız tarihleri tutar; bunlar NULL olur ve rapor bunları sayar.invalid_date_null
NOT NULL columns with values that become NULLNOT NULL kaldırılırBoş dizeler dahil, değerleri NULL olmak zorunda kalan bir sütun NOT NULL kısıtını koruyamaz, yoksa yükleme durur.not_null_relaxed
empty strings and empty binary valuesNULLOracle boş bir dizeyi NULL olarak saklar, bu yüzden ' olan bir değer NULL olarak okunur. Rapor bunları sütun başına sayar.empty_string_null
DEFAULT '0000-00-00'varsayılan değer yokOracle'ın saklayamadığı bir varsayılan değer, uydurma bir tarihle değiştirilmek yerine dışarıda bırakılır.zero_date_default
TIMEsüreleri tutan INTERVAL DAY TO SECONDOracle'da günün saati türü yoktur ve MySQL'in TIME türü -838:59:59 ile 838:59:59 arasında bir süredir; bir interval her değeri tutar.
YEARaralığını denetleyen bir CHECK ile NUMBER(4)Oracle'da yıl türü yoktur; CHECK, MySQL'in izin verdiği değerlerin aynısını korur.
CHAR(n), VARCHAR(n)karakter sayan VARCHAR2(n CHAR)Uzunluklar MySQL'deki gibi karakter sayar ve MySQL CHAR değerlerini sondaki boşluklar olmadan döndürür, VARCHAR2 da onları öyle korur.
VARCHAR(n) and TEXT longer than 4000 bytesCLOBBir VARCHAR2 varsayılan olarak 4000 bayt tutar, bu yüzden daha uzun metin CLOB olur; tüm değerleri sığan bir sütun VARCHAR2 olarak kalır.text_as_lob
DATETIMETIMESTAMPDATETIME, TIMESTAMP gibi saat dilimi olmayan bir duvar saati okumasıdır. DATE, Oracle'ın DATE türüne dönüşür; bu tür gece yarısında kalan bir günün saatini de tutar.
TIMESTAMPdökümün belirttiği saat diliminde TIMESTAMP WITH TIME ZONE, belirtmiyorsa UTCTIMESTAMP bir andır. Dökümler değeri yazdıkları saat dilimini belirtir (mysqldump UTC yazar); bu bilgi yoksa değerler UTC olarak okunur ve rapor bunu belirtir.timestamp_zone_assumed
ENUMdeğerlerini denetleyen bir CHECK ile VARCHAR2CHECK ile metin aynı değerleri korur.
ENUM holding '' (MySQL's error value)NULLMySQL, esnek bir SQL modunda bir ENUM'a geçersiz bir değer girildiğinde boş bir dize saklar. Oracle bunu NULL olarak saklar, CHECK buna izin verir ve rapor onu diğer boş değerlerle birlikte sayar.
ENUM holding values outside its listCHECK yokListede adı geçmeyen değerler CHECK'ten geçemez; bu yüzden CHECK oluşturulmaz.enum_check_skipped
SETMySQL'in yazdığı şekliyle VARCHAR2 ('a,b')Oracle'da küme türü yoktur; metin MySQL'in döndürdüğü metindir.
JSONCLOBOracle'ın JSON fonksiyonları her sürümde JSON'u metinden okur ve bir CLOB her boyuttaki değeri tutar.
NUL bytes in textkorunurVARCHAR2 ve CLOB bir NUL karakteri tutabilir, bu yüzden değer olduğu gibi kopyalanır.
text that isn't valid in its character sethatalı baytlar yerine koyma karakteri olarakMetnin VARCHAR2 olarak yazılabilmesi için karakter olarak okunması gerekir.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
AUTO_INCREMENTkopyalanan id'lerin ötesinden yeniden başlatılan GENERATED BY DEFAULT ON NULL AS IDENTITYKopyalanan id'ler olduğu gibi yüklenir ve sayaç, en yüksek id'den veya dökümün AUTO_INCREMENT değerinden (hangisi büyükse) sonra devam eder.
MyISAM AUTO_INCREMENT on the second column of a keytablo için tek sayaçMyISAM, anahtarın ilk sütununun her grubu için ayrı sayar; Oracle'da tablo başına tek sayaç vardır.myisam_group_autoincrement
ON UPDATE CURRENT_TIMESTAMPbir BEFORE UPDATE tetikleyicisiTetikleyici, bir güncelleme sütunu ayarlamadığında sütunu geçerli zamana ayarlar.on_update_trigger
generated columnssanal sütunlarOracle üretilen sütunları yalnızca okurken hesaplar; STORED sütunlar aynı değerlerle sanal olur.stored_as_virtual
generated columns with functions Oracle lacksdüz bir sütunOracle için yazılamayan bir formül, düz bir sütun ve bir rapor satırı bırakır.generated_not_translated
INVISIBLE columnsINVISIBLE sütunlarOracle, MySQL'deki gibi görünmez sütunları SELECT * sonucundan gizler.
CHECK constraintsçevrilir, CREATE TABLE içinde satır içiSatır içi CHECK kısıtları her satır yüklenirken test edilir.
CHECK constraints with functions Oracle lacksoluşturulmazOracle için yazılamayan bir CHECK kısıtı dışarıda bırakılır ve raporlanır.check_skipped
CHECK ... NOT ENFORCEDoluşturulmazMySQL bu CHECK kısıtlarını uygulamadan tutar, bu yüzden satırlar onları ihlal edebilir.check_not_enforced
defaults with functions Oracle lacksvarsayılan değer yokOracle için yazılamayan bir varsayılan değer dışarıda bırakılır ve raporlanır.default_not_translated
keys and indexes on a prefix, c(20)sütunun SUBSTR'si üzerinde bir indeksSütunun aynı başlangıcı üzerindeki bir fonksiyon indeksi aynı satırları birbirinden ayırır ve Oracle'ın tamamını indeksleyemediği CLOB sütunlarını indeksler.prefix_unique
FULLTEXT indexesoluşturulmazOracle Text tam metin aramayı kendi indeks türü ve sorgularıyla kurar.fulltext_not_created
SPATIAL indexesoluşturulmazGeometriler WKB baytları olarak saklanır ve uzamsal indeks bunları okuyamaz.spatial_index_not_created
functional indexes, and indexes on whole CLOB or BLOB columnsoluşturulmazOracle büyük bir nesneyi bütün olarak indeksleyemez ve bazı MySQL fonksiyonlarının Oracle karşılığı yoktur.index_skipped
foreign keysveriden sonra ENABLE NOVALIDATE, ardından yetim satırlar için uyarıyla doğrulanırDökümler FOREIGN_KEY_CHECKS=0 ile yüklenir ve MyISAM hiç denetlemez, bu yüzden üst satırı olmayan satırlar yaygındır. Anahtar yeni satırları hemen denetler ve en son doğrulanır; yetim satırlar varsa yüklemeyi durdurmak yerine anahtar bir uyarıyla doğrulanmamış kalır.
ON UPDATE CASCADE, SET NULL or SET DEFAULT; ON DELETE SET DEFAULTkaldırılırOracle'ın yabancı anahtarları yalnızca silmede, CASCADE veya SET NULL ile işlem yapar.foreign_key_action_unsupported
foreign keys to columns without a unique keyoluşturulmazOracle, başvurulan sütunlarda bir birincil anahtar veya benzersiz bir kısıt ister; InnoDB istemez.foreign_key_skipped
table and column namesdüz adlarsa büyük harf, değilse yazıldığı gibiOracle tırnaksız yazılan adları büyük harfle saklar; bu yüzden düz adlar büyük harfe çevrilir ve sorgular tırnakları atlayabilir; diğer adlar büyük/küçük harflerini korur ve tırnak gerektirir.identifier_renamed
names over 128 byteskısaltılırOracle 12.2 ve sonrasında adlar 128 bayt tutar.name_shortened
GEOMETRY, POINT, POLYGON...WKB tutan BLOBWKB, her uzamsal kütüphanenin okuduğu standart biçimdir; SDO_GEOMETRY, Oracle Spatial meta verilerini gerektirir.geometry_as_blob
INET4, INET6, UUID (MariaDB)VARCHAR2(39), VARCHAR2(36)Oracle'da bu türlerin hiçbiri yoktur; metin MariaDB'nin döndürdüğü metindir.
BINARY, VARBINARY, BLOB2000 bayta kadar RAW, değilse BLOBBaytlar bayt olarak kalır.
PARTITION BYtek tabloSatırlar aynıdır; gerekiyorsa tabloyu Oracle'da yeniden bölümleyin.partitions_dropped
WITH SYSTEM VERSIONING (MariaDB)mevcut satırları içeren bir tabloDöküm yalnızca mevcut satırları içerir.system_versioning_dropped
MyISAM, MEMORY and other enginesnormal bir tabloOracle'ın tek bir tablo motoru vardır.engine_dropped
views, triggers, procedures, functions and eventsraporda listelenirKodları MySQL'in dilinde yazılmıştır, bu yüzden yeniden oluşturmanız için listelenirler.not_converted_objects
dumps without CREATE TABLEdeğerlerden okunan türler--no-create-info ile alınan bir dökümde yalnızca satırlar vardır, bu yüzden türler değerlerden gelir.no_schema
geometries in a dump without CREATE TABLEWKB tutan BLOBMySQL'in geometri biçimi değerlerden tanınır ve standart WKB olarak saklanır.geometry_inferred
_ci collationstam karşılaştırmaOracle, aksi belirtilmedikçe metni tam olarak karşılaştırır.case_insensitive_collation
SET NAMES utf8 from utf8mb4 tablesdönüştürülür, uyarıylaMySQL 5.x mysqldump varsayılan olarak 3 baytlık utf8 yazar ve herhangi bir dönüştürücü dosyayı görmeden önce her emojiyi soru işaretiyle değiştirir.dump_lost_four_byte_chars
dumps without SET NAMES whose text isn't UTF-8Latin-1 (Windows-1252) olarak okunurMySQL'in latin1 kodlaması Windows-1252'dir; bu tür dökümlerin olağan kodlamasıdır.charset_guessed
sjis, cp932, gbk, big5 dumpsuyarıyla UTF-8 olarak okunurBu kodlamalar henüz çözülmüyor.unsupported_charset
UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rowshesaplanırBazı döküm araçları değerleri bu çağrılar olarak yazar; bunlar ürettikleri değerler olarak okunur, coğrafi WKT'de boylam başa alınır.
other expressions in rowsNULLVeritabanı çalıştırmayan bir dönüştürücü bunları hesaplayamaz.expression_value
DEFAULT in VALUESsütunun varsayılan değeriSabit bir varsayılan değer satıra kopyalanır.default_keyword_filled
DEFAULT in VALUES without a literal defaultNULLKopyalanacak bir değer yok.default_keyword_null
REPLACE and INSERT IGNOREdüz satırlarBir dökümde her anahtar için bir satır vardır, bu yüzden satırlar aynıdır.replace_as_insert
types IntoSQL doesn't knowCLOBMetin her değeri tutar; yüklemeden sonra türü değiştirin.unknown_type
values that don't fit their columnNULLHasarlı veya elle yazılmış bir döküm, sütununun tutamayacağı değerler içerebilir; geri kalanın yüklenmesi için bunlar NULL olur.invalid_value_null
unreadable geometriesNULLGeometri olmayan baytlar geometri olarak saklanamaz.bad_geometry
dumps of several databasestek şema, her tablonun adı önce veritabanının adıyla başlarBetik, onu çalıştıran kullanıcının şemasına yüklenir; bu yüzden farklı veritabanlarının tablolarının başına veritabanının adı eklenir.databases_merged
CREATE SEQUENCE (MariaDB)ulaştığı değerden CREATE SEQUENCEOracle sequence nesneleri aynı şekilde çalışır.
VECTOR(n) (MariaDB 11.7+)float'ları JSON dizisi olarak tutan CLOBYalnızca Oracle 23ai'de vektör türü vardır; bir JSON dizisi her sürümde her float'ı korur.type_replaced

Betiği Oracle 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.

NLS_LANG=.AL32UTF8 sqlplus -S -L user@//localhost/mydb @mysql.oracle.sql

Yabancı anahtarlar ENABLE NOVALIDATE ile eklenir, böylece yeni satırlar hemen denetlenir, ardından doğrulanır. Eski bir satır var olmayan bir satıra işaret ediyorsa betik, yarı yolda başarısız olmak yerine hangi kısıt olduğunu söyler ve onu doğrulanmamış bırakır.

Büyük bir döküm için SQL*Plus'ı veritabanıyla aynı makinede çalıştırın. Betik her 100 satırda bir commit yapar. Betiği çalıştıran kullanıcının CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER ve CREATE PROCEDURE yetkilerine ve tablo alanında kotaya ihtiyacı vardır.

En iyi sonuç için MySQL 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:

  • --default-character-set=utf8mb4 emoji ve diğer 4 baytlık karakterleri korur; utf8 dökümü bunları dönüştürücü görmeden önce kaybeder.
  • --hex-blob ikili sütunları onaltılık olarak yazar; bu biçim sistemler arasında kopyalamada bozulmaz.
  • --routines --triggers --events bu nesneleri döküme ekler; böylece rapor onları listeleyebilir.

Neler dönüştürülmez

Görünümler, tetikleyiciler, saklı yordamlar, fonksiyonlar ve olaylar her veritabanının kendi dilinde yazılır. Raporda adlarıyla listelenirler, asla sessizce atlanmazlar; böylece onları Oracle için yeniden yazabilirsiniz.

MySQL - Oracle 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.

MariaDB dökümlerini okuyor mu?

Evet. mariadb-dump ile alınan dökümler ve MariaDB 10.3 ile 12 arası sürümlerin dökümleri, MariaDB'nin INET6, INET4 ve UUID sütunları dahil, aynı şekilde dönüştürülür.

0000-00-00 tarihlerine ne olur?

Oracle içinde sıfır tarih yoktur; bu yüzden bunlar NULL olur ve sütun NULL kabul eder. Rapor her sütunda kaç tane olduğunu söyler. Oracle boş dizeleri NULL olarak sakladığı için boş dizeler de NULL olur.

AUTO_INCREMENT değerleri korunuyor mu?

Evet. Her AUTO_INCREMENT sütunu bir kimlik sütunu olur, her satır kendi id'sini korur ve sonraki id en yüksek id'den sonra devam eder; tablonun AUTO_INCREMENT değeri daha yüksekse ondan sonra.

TINYINT(1) boolean olur mu?

Oracle 23ai öncesinde boolean sütun yoktur. Değerlerinin tümü 0 veya 1 olan bir sütun, bunu koruyan bir CHECK ile NUMBER(1) olur; başka sayılar içeren bir sütun onları korur ve rapor nedenini söyler.

Saklı yordamlar ve tetikleyiciler ne olur?

Raporda adlarıyla listelenirler ve dönüştürülmezler, çünkü her veritabanı onları kendi dilinde yazar. ON UPDATE CURRENT_TIMESTAMP istisnadır: bir Oracle tetikleyicisine dönüşür.

Betik hangi Oracle sürümlerinde yüklenir?

Oracle 19c ve sonrası. Her test dökümü 21c ve 23ai üzerinde yüklenir ve bir sorun çıkarsa ilk hatada durur.