Làm cách nào để chuyển đổi Oracle SQL sang MySQL?

Nhiệm vụ di chuyển một lược đồ hoàn chỉnh từ cơ sở dữ liệu này sang cơ sở dữ liệu khác không phải lúc nào cũng đơn giản. Ngoài khía cạnh vật lý từ việc lấy dữ liệu từ máy này sang máy khác hoặc thậm chí là một vị trí địa lý khác, một số tác vụ phức tạp hơn đang chuyển đổi giữa các loại dữ liệu khác nhau, các thủ tục được lưu trữ và đơn giản là sự khác biệt không tương thích có thể xảy ra giữa hai cơ sở dữ liệu

Bộ công cụ di chuyển MySQL ban đầu là gói được lựa chọn, nhưng gói này đã được thay thế bởi MySQL Workbench. Tuy nhiên, tại thời điểm này, khả năng di chuyển của MySQL Workbench vẫn đang được phát triển thành một giải pháp di chuyển hoàn chỉnh cho cả các cơ sở dữ liệu thương mại lớn

Xuất dữ liệu từ Oracle

Xuất dữ liệu hiện có từ Oracle thường là một trong những hình thức di chuyển rẻ nhất, nhưng nó có thể yêu cầu nhiều thao tác nhập liệu thủ công hơn và có thể chậm hơn so với sử dụng công cụ di chuyển. Một trong những công cụ phổ biến nhất để xuất dữ liệu từ Oracle là Oracle SQL Developer. Công cụ Oracle SQL Developer có khả năng xuất dữ liệu từ các bảng Oracle ở nhiều định dạng, như Excel, câu lệnh chèn SQL, định dạng trình tải SQL, HTML, XML, PDF, TEXT, Văn bản cố định, v.v.

Bạn có thể sử dụng SQL*Plus để chọn và định dạng dữ liệu của mình, sau đó lưu trữ dữ liệu đó vào một tệp. Ví dụ này tạo ra tệp CSV (giá trị được phân tách bằng dấu phẩy) có thể được nhập qua LOAD DATA INFILE hoặc bằng cách tạo bảng CSV để truy cập ngay

set echo off newpage 0 space 0 pagesize 0 feed off head off trimspool on 
spool oradata.txt 
select col1 || ',' || col2 || ',' || col3 
  from tab1 
  where col2 = 'XYZ'; 
spool off

Bạn cũng có thể sử dụng lệnh “set colsep” nếu không muốn đặt dấu phẩy bằng tay. Điều này tiết kiệm rất nhiều đánh máy. Thí dụ

set colsep ',' 
set echo off newpage 0 space 0 pagesize 0 feed off head off trimspool on 
spool oradata.txt 
select col1, col2, col3 
  from tab1 where col2 = 'XYZ'; 
spool off

Sử dụng PL/SQL

Gói UTL_FILE của PL/SQL cũng có thể được sử dụng để hủy tải dữ liệu. Thí dụ

declare 
  fp utl_file.file_type; 
begin 
  fp := utl_file.fopen('c:\oradata','tab1.txt','w'); 
  utl_file.putf(fp, '%s, %sn', 'TextField', 55); 
  utl_file.fclose(fp); 
end; 
/

Nhập dữ liệu vào MySQL

Khi dữ liệu đã được xuất từ ​​Oracle thành một tệp phẳng, thì nó có thể được tải vào MySQL. Bước này tiếp tục với kỳ vọng rằng một cấu trúc lược đồ giống hệt nhau đã được tạo trong cơ sở dữ liệu MySQL để chấp nhận dữ liệu. Phương pháp phổ biến nhất để đọc một tệp phẳng vào MySQL là sử dụng lệnh LOAD DATA INFILE. Đây là hình thức

LOAD DATA INFILE 'data.txt'   INTO TABLE tbl_name   FIELDS TERMINATED BY ','  ENCLOSED BY '"' 
   LINES TERMINATED BY '\r\n' 
   IGNORE 1 LINES;

Thao tác này sẽ đọc dữ liệu đã xuất từ ​​tệp 'data. txt’ vào bảng ‘tbl_name’ bằng cách sử dụng các dấu phân cách được chỉ định

Ghi chú. Ngoài ra còn có LOAD XML INFILE nếu dữ liệu xuất ra ở định dạng XML

Một phương pháp khác có thể tải nhanh hơn nữa là sử dụng khả năng của công cụ lưu trữ CSV. Điều này yêu cầu bảng phải được tạo lại với lược đồ phù hợp và công cụ lưu trữ được chỉ định là CSV. Ví dụ

CREATE TABLE mytable (
   name varchar(50)  NOT NULL,
   address varchar(100) NOT NULL,
   zipcode CHAR(5) NOT NULL
) ENGINE=CSV; 

Sau khi bảng được tạo, một. csv sẽ xuất hiện trong thư mục dữ liệu tương ứng với bảng sẵn sàng lưu trữ dữ liệu. Sao chép tệp CSV đã xuất qua 'mytable hiện có. csv’ và thực thi FLUSH TABLES để cập nhật thông tin bảng. Bây giờ bạn có quyền truy cập vào dữ liệu và có thể sử dụng INSERT INTO new_table … CHỌN để đọc dữ liệu nhanh chóng từ bảng CSV sang một bảng phù hợp hơn cho hệ thống sản xuất của bạn

Với việc mất giấy phép Oracle Standard Edition One và cơ sở dữ liệu Oracle Express Edition miễn phí bị kẹt ở Phiên bản 2 11g cũ từ năm 2014, nhiều dự án nhỏ hơn đang xem xét liệu MySQL có thể là giải pháp thay thế hay không.

Nếu bạn đang xây dựng ứng dụng của mình từ đầu, hầu hết các dự án có thể bắt đầu với bất kỳ cơ sở dữ liệu quan hệ nào. Nhưng nếu bạn có một cơ sở dữ liệu hiện có, bạn cần điều tra cẩn thận xem việc di chuyển có hợp lý không

So sánh tính năng

Nhiều tính năng của Oracle cũng có sẵn trong MySQL

  • Những cái bàn
  • Lượt xem
  • khóa chính
  • phím duy nhất
  • khóa ngoại
  • thủ tục
  • Chức năng
  • Gây nên

Đối với một số tính năng của Oracle, MySQL có chức năng tương đương nhưng được triển khai khác. Ví dụ: MySQL không có các chuỗi mà thay vào đó cho phép các cột được xác định là AUTO_INCREMENT. Điều này giúp loại bỏ trình kích hoạt khóa chính cần thiết cho đến Oracle 12

MySQL không có gì tương ứng với các gói PL/SQL, chỉ có các hàm và thủ tục. Điều này có nghĩa là bạn cũng không có các biến gói nhưng sẽ phải sử dụng các biến do người dùng xác định trong phạm vi phiên (@my_var) để lưu trữ các giá trị

Người dùng và Bảo mật

Cơ sở dữ liệu, lược đồ và người dùng cũng hoạt động khác nhau. Trong Oracle, bạn có một cơ sở dữ liệu với nhiều lược đồ cũng là người dùng. Trong MySQL, từ DATABASE đồng nghĩa với SCHEMA và được tách rời khỏi người dùng. Vì vậy, người dùng cần được cấp quyền truy cập vào lược đồ/cơ sở dữ liệu

Mô hình bảo mật trong MySQL nói chung đơn giản hơn nhiều so với Oracle, vì vậy nếu bạn có bảo mật chi tiết và/hoặc phức tạp trong ứng dụng Oracle, sẽ khó chuyển sang MySQL

Loại dữ liệu

Các kiểu dữ liệu khác nhau giữa Oracle và MySQL, nhưng nhìn chung có thể được ánh xạ dễ dàng

tiên tri

mysql

VARCHAR2

VARCHAR

SỐ

SỐ

NGÀY

NGÀY GIỜ

Lưu ý rằng biến MySQL DATE chỉ có phần ngày và không có thời gian. Việc chuyển đổi dễ dàng là biến mọi NGÀY của Oracle thành DATETIME của MySQL, nhưng nếu bạn không bao giờ cần phần tử thời gian, thì nên sử dụng MySQL DATE cho các giá trị này

MySQL có rất nhiều kiểu dữ liệu khác nhau, từ TINYINT 3 chữ số đến BIGINT 19 chữ số. Bạn cần sử dụng một trong các loại INT cho các cột chính sử dụng AUTO_INCREMENT

Còn PL/SQL thì sao?

Ngôn ngữ lập trình trong MySQL đơn giản hơn nhiều so với PL/SQL và MySQL không có bất cứ thứ gì giống như khả năng của các gói tích hợp trong Oracle. Nếu bạn đang sử dụng nhiều gói tích hợp, sẽ rất khó để chuyển sang MySQL

Mặc dù bạn có các khả năng kích hoạt bảng trong MySQL giống như trong Oracle (TRƯỚC/SAU, hàng hoặc bảng), nhưng bạn không có tất cả các trình kích hoạt khác mà Oracle cung cấp, như trình kích hoạt DDL, ON-LOGON, v.v.

Có một số khác biệt về cú pháp – ví dụ, các nhánh PL/SQL EXCEPTION được xử lý trong MySQL với DECLARE HANDLER. MySQL có các cấu trúc điều khiển cơ bản như các vòng lặp IF-THEN-ELSE, WHILE và REPEAT, nhưng bạn sẽ tìm kiếm cấu trúc vòng lặp FOR một cách vô ích. MySQL không có khái niệm về các biến neo với %TYPE và %ROWTYPE

Trình hướng dẫn di chuyển

MySQL Workbench đi kèm với trình hướng dẫn di chuyển cơ sở dữ liệu. Trình hướng dẫn này giúp bạn di chuyển từ MS SQL Server, MS Access, PostgreSQL và Sybase. Vì MySQL thuộc sở hữu của Oracle nên rõ ràng là không có sự di chuyển từ Oracle sang MySQL

Ngoài ra còn có một quá trình di chuyển chung có thể được sử dụng để di chuyển “hầu hết các cơ sở dữ liệu tuân thủ ODBC. ” Tuy nhiên, điều này cũng không thể được sử dụng để di chuyển từ Oracle sang –MySQL—trình hướng dẫn sẽ kết nối nhưng không thấy bất kỳ đối tượng cơ sở dữ liệu nào để di chuyển

Công cụ di chuyển khác

Microsoft sẽ sẵn lòng giúp bạn di chuyển từ Oracle sang SQL Server bằng Trợ lý di chuyển Microsoft SQL Server. Từ đó, bạn có thể sử dụng thuật sĩ di chuyển MySQL, hỗ trợ di chuyển từ MS SQL Server

Tìm kiếm trên Internet cũng sẽ tạo ra một số công cụ của bên thứ ba nhằm mục đích có thể di chuyển cơ sở dữ liệu của bạn từ Oracle sang MySQL

Di chuyển thủ công

Bạn cũng có thể xuất cơ sở dữ liệu Oracle của mình sang một tệp bằng Oracle SQL Developer và sau đó thực hiện các điều chỉnh cần thiết để tạo cơ sở dữ liệu MySQL tương đương. Dưới đây là một ví dụ về xuất từ ​​SQL Developer của một cơ sở dữ liệu đơn giản chứa nhiều đối tượng lược đồ Oracle thông thường và cách chúng ánh xạ tới MySQL

Những cái bàn

Nhà phát triển SQL xuất các bảng có dấu ngoặc kép, như thế này

--------------------------------------------------------
--  DDL for Table EVENTS
--------------------------------------------------------

CREATE TABLE "EVENTS"
  ("EV_ID" NUMBER,
   "DESCRIPTION" VARCHAR2(240),
   "START_DATE" DATE,
   "END_DATE" DATE
  );
--------------------------------------------------------
--  DDL for Table MEMBERS
--------------------------------------------------------

CREATE TABLE "MEMBERS"
  ("MEM_ID" NUMBER,
   "FIRST_NAME" VARCHAR2(80),
   "LAST_NAME" VARCHAR2(80),
   "EMAIL" VARCHAR2(240)
  );
--------------------------------------------------------
--  DDL for Table REGISTRATIONS
--------------------------------------------------------

CREATE TABLE "REGISTRATIONS"
  ("EV_ID" NUMBER,
   "MEM_ID" NUMBER,
   "REG_DATE" DATE DEFAULT sysdate
  );

Để tạo các bảng này trong MySQL, bạn cần bỏ dấu ngoặc kép và thay đổi kiểu dữ liệu. SYSDATE là một chức năng dành riêng cho Oracle mà bạn cần thay thế bằng CURRENT_TIMESTAMP tương đương. Một tập lệnh MySQL có thể trông như thế này

CREATE TABLE EVENTS
  (EV_ID INT,
   DESCRIPTION VARCHAR(240),
   START_DATE DATETIME,
   END_DATE DATETIME,
   ATTENDANCE_COST NUMERIC
  );
CREATE TABLE MEMBERS
  (MEM_ID INT,
   FIRST_NAME VARCHAR(80),
   LAST_NAME VARCHAR(80),
   EMAIL VARCHAR(240)
  );
  CREATE TABLE REGISTRATIONS
  (EV_ID INT,
   MEM_ID INT,
   REG_DATE DATETIME DEFAULT CURRENT_TIMESTAMP
  );

trình tự

Bạn không cần các trình tự trong MySQL, vì vậy bạn không cần phải bao gồm các trình tự này nếu bạn xuất cơ sở dữ liệu Oracle của mình bằng SQL Developer. Nếu bạn đang sử dụng trình kích hoạt hoàn toàn để tạo các giá trị khóa chính, bạn cũng có thể loại bỏ chúng

Hạn chế

Bản xuất SQL Developer thêm tất cả các ràng buộc dưới dạng các câu lệnh ALTER TABLE riêng lẻ, như thế này

--------------------------------------------------------
--  Constraints for Table EVENTS
--------------------------------------------------------
  ALTER TABLE "EVENTS" MODIFY ("EV_ID" NOT NULL ENABLE);
  ALTER TABLE "EVENTS" ADD CONSTRAINT "EVENTS_PK" PRIMARY KEY ("EV_ID")
    USING INDEX  ENABLE;
  ALTER TABLE "EVENTS" MODIFY ("DESCRIPTION" NOT NULL ENABLE);
  ALTER TABLE "EVENTS" ADD CONSTRAINT "EVENTS_DESCR_UK"
    UNIQUE ("DESCRIPTION") USING INDEX  ENABLE;

--------------------------------------------------------
--  Constraints for Table MEMBERS
--------------------------------------------------------
  ALTER TABLE "MEMBERS" MODIFY ("MEM_ID" NOT NULL ENABLE);
  ALTER TABLE "MEMBERS" MODIFY ("FIRST_NAME" NOT NULL ENABLE);
  ALTER TABLE "MEMBERS" MODIFY ("LAST_NAME" NOT NULL ENABLE);
  ALTER TABLE "MEMBERS" MODIFY ("EMAIL" NOT NULL ENABLE);
  ALTER TABLE "MEMBERS" ADD CONSTRAINT "MEMBERS_PK"
    PRIMARY KEY ("MEM_ID") USING INDEX  ENABLE;
  ALTER TABLE "MEMBERS" ADD CONSTRAINT "MEMBERS_EMAIL_UK"
  UNIQUE ("EMAIL") USING INDEX  ENABLE;

--------------------------------------------------------
--  Constraints for Table REGISTRATIONS
--------------------------------------------------------

  ALTER TABLE "REGISTRATIONS" MODIFY ("EV_ID" NOT NULL ENABLE);
  ALTER TABLE "REGISTRATIONS" MODIFY ("MEM_ID" NOT NULL ENABLE);
  ALTER TABLE "REGISTRATIONS" ADD CONSTRAINT "REGISTRATIONS_PK"
    PRIMARY KEY ("EV_ID", "MEM_ID") USING INDEX  ENABLE;

--------------------------------------------------------
--  Ref Constraints for Table REGISTRATIONS
--------------------------------------------------------
  ALTER TABLE "REGISTRATIONS" ADD CONSTRAINT "REG_EV_FK"
    FOREIGN KEY ("EV_ID") REFERENCES "EVENTS" ("EV_ID") ENABLE;
  ALTER TABLE "REGISTRATIONS" ADD CONSTRAINT "REG_MEM_FK"
    FOREIGN KEY ("MEM_ID") REFERENCES "MEMBERS" ("MEM_ID") ENABLE;

Trong MySQL, bạn cần xóa dấu ngoặc kép. Cú pháp cũng hơi khác một chút, không có dấu ngoặc đơn xung quanh thông số cột. Ngoài ra, MySQL yêu cầu bạn cung cấp đặc tả cột đầy đủ bao gồm kiểu dữ liệu cho mọi câu lệnh ALTER. Bạn phải tạo khóa chính của cột trước khi có thể thêm AUTO_INCREMENT. Trong MySQL, ở trên có thể trở thành

________số 8_______

Lượt xem

Xuất chế độ xem mặc định từ Oracle qua SQL Developer trông như thế này

CREATE OR REPLACE EDITIONABLE VIEW "REG_EMAIL"
    ("EV_ID", "DESCRIPTION", "EMAIL")
AS
  select ev.ev_id, ev.description, mem.email
  from   events ev, members mem, registrations reg
  where  reg.ev_id = ev.EV_ID
  and    reg.mem_id = mem.mem_id;

Trong MySQL, không có TẠO HOẶC THAY THẾ, cũng như khái niệm có thể chỉnh sửa, do đó, MySQL tương đương trở thành

CREATE VIEW REG_EMAIL (EV_ID, DESCRIPTION, EMAIL)
AS
  select ev.ev_id, ev.description, mem.email
  from   events ev, members mem, registrations reg
  where  reg.ev_id = ev.EV_ID
  and    reg.mem_id = mem.mem_id;

Dữ liệu

Nhà phát triển SQL có thể xuất dữ liệu của bạn dưới dạng câu lệnh INSERT, như thế này

REM INSERTING into EVENTS
SET DEFINE OFF;
insert into EVENTS (EV_ID,DESCRIPTION,START_DATE,END_DATE)
values ('101','Oracle OpenWorld 2017',
        to_date('2017-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS'),
        to_date('2017-10-05 00:00:00','YYYY-MM-DD HH24:MI:SS'));
insert into EVENTS (EV_ID,DESCRIPTION,START_DATE,END_DATE)
values ('102','Oracle Code London',
        to_date('2017-04-20 00:00:00','YYYY-MM-DD HH24:MI:SS'),null);
REM INSERTING into MEMBERS
SET DEFINE OFF;
insert into MEMBERS (MEM_ID,FIRST_NAME,LAST_NAME,EMAIL)
values ('1','Sten','Vesterli','[email protected]');
insert into MEMBERS (MEM_ID,FIRST_NAME,LAST_NAME,EMAIL)
values ('2','Larry','Ellison','[email protected]');

Nhà phát triển SQL thêm một số cú pháp SQL*Plus (REM và SET) mà bạn cần xóa. MySQL không có hàm TO_DATE, nhưng chấp nhận trực tiếp các giá trị DATETIME dưới dạng các chuỗi được trích dẫn ở định dạng tiêu chuẩn ISO. Trong MySQL, bạn chỉ cần một cái gì đó như thế này

insert into EVENTS (EV_ID,DESCRIPTION,START_DATE,END_DATE)
values ('101','Oracle OpenWorld 2017',
        '2017-10-01 00:00:00','2017-10-05 00:00:00');
insert into EVENTS (EV_ID,DESCRIPTION,START_DATE,END_DATE)
values ('102','Oracle Code London','2017-04-20 00:00:00',null);
insert into MEMBERS (MEM_ID,FIRST_NAME,LAST_NAME,EMAIL)
values ('1','Sten','Vesterli','[email protected]');
insert into MEMBERS (MEM_ID,FIRST_NAME,LAST_NAME,EMAIL)
values ('2','Larry','Ellison','[email protected]');

Gây nên

Quá trình xuất trình kích hoạt SQL Developer trông như thế này

--------------------------------------------------------
--  DDL for Trigger REGISTRATIONS_AFT_INS_REC
--------------------------------------------------------

CREATE OR REPLACE EDITIONABLE TRIGGER "REGISTRATIONS_AFT_INS_REC"
AFTER INSERT ON REGISTRATIONS
FOR EACH ROW
DECLARE
  l_email varchar2(240);
  l_ev_desc varchar2(240);
BEGIN
  select email
  into   l_email
  from   MEMBERS
  where  MEM_ID = :new.mem_id;
  select description
  into   l_ev_desc
  from   EVENTS
  where  EV_ID = :new.ev_id;
  UTL_MAIL.send(
    sender => '[email protected]'
  , recipients => l_email
  , subject => 'Registration for ' || l_ev_desc
  , message => 'We received your registration for '
    || l_ev_desc
  );
END;
/
ALTER TRIGGER "REGISTRATIONS_AFT_INS_REC" ENABLE;

MySQL không có CREATE OR REPLACE hoặc EDITIONABLE và các khai báo phải được thực hiện riêng lẻ với DECLARE. Cú pháp đề cập đến bản ghi kích hoạt chỉ là MỚI trong MySQL, không phải. MỚI như trong Oracle. Bạn cũng cần đặt rõ ràng DELIMITER trong MySQL để thông báo khi mã kích hoạt hoàn tất. Lưu ý rằng các trình kích hoạt, chức năng và thủ tục của MySQL không được có tên như một phần của câu lệnh END cuối cùng

Trong ví dụ này, trình kích hoạt Oracle sử dụng UTL_MAIL, một trong nhiều phần mềm tích hợp sẵn không có sẵn trong MySQL. Bạn cần tìm một cách khác để triển khai loại chức năng này trong MySQL. MySQL tương đương của bạn có thể trông như thế này

DELIMITER //
CREATE TRIGGER REGISTRATIONS_AFT_INS_REC
AFTER INSERT ON REGISTRATIONS
FOR EACH ROW
BEGIN
DECLARE l_email varchar(240);
DECLARE  l_ev_desc varchar(240);
  select email
  into   l_email
  from   MEMBERS
  where  MEM_ID = new.mem_id;
  select description
  into   l_ev_desc
  from   EVENTS
  where  EV_ID = new.ev_id;
  -- send mail somehow
END;
//

Chức năng

Một hàm Oracle được xuất từ ​​​​SQL Developer trông như thế này

CREATE TABLE EVENTS
  (EV_ID INT,
   DESCRIPTION VARCHAR(240),
   START_DATE DATETIME,
   END_DATE DATETIME,
   ATTENDANCE_COST NUMERIC
  );
CREATE TABLE MEMBERS
  (MEM_ID INT,
   FIRST_NAME VARCHAR(80),
   LAST_NAME VARCHAR(80),
   EMAIL VARCHAR(240)
  );
  CREATE TABLE REGISTRATIONS
  (EV_ID INT,
   MEM_ID INT,
   REG_DATE DATETIME DEFAULT CURRENT_TIMESTAMP
  );
0

Trong MySQL với các từ khóa không liên quan đã bị xóa, khai báo rõ ràng và kiểu dữ liệu đã thay đổi, quy trình này có thể trông như thế này

CREATE TABLE EVENTS
  (EV_ID INT,
   DESCRIPTION VARCHAR(240),
   START_DATE DATETIME,
   END_DATE DATETIME,
   ATTENDANCE_COST NUMERIC
  );
CREATE TABLE MEMBERS
  (MEM_ID INT,
   FIRST_NAME VARCHAR(80),
   LAST_NAME VARCHAR(80),
   EMAIL VARCHAR(240)
  );
  CREATE TABLE REGISTRATIONS
  (EV_ID INT,
   MEM_ID INT,
   REG_DATE DATETIME DEFAULT CURRENT_TIMESTAMP
  );
1

thủ tục

Một ví dụ về thủ tục PL/SQL từ cơ sở dữ liệu Oracle có thể trông như thế này khi được xuất từ ​​SQL Developer

CREATE TABLE EVENTS
  (EV_ID INT,
   DESCRIPTION VARCHAR(240),
   START_DATE DATETIME,
   END_DATE DATETIME,
   ATTENDANCE_COST NUMERIC
  );
CREATE TABLE MEMBERS
  (MEM_ID INT,
   FIRST_NAME VARCHAR(80),
   LAST_NAME VARCHAR(80),
   EMAIL VARCHAR(240)
  );
  CREATE TABLE REGISTRATIONS
  (EV_ID INT,
   MEM_ID INT,
   REG_DATE DATETIME DEFAULT CURRENT_TIMESTAMP
  );
2

Trong MySQL, cú pháp tham số khác, với từ khóa IN hoặc OUT trước. Các ngoại lệ được khai báo với DECLARE … XỬ LÝ CHO – trong ví dụ bên dưới, mọi thứ trong khối BEGIN END bên dưới khai báo trình xử lý là trình xử lý cho điều kiện cụ thể KHÔNG TÌM THẤY. Trình xử lý có thể TIẾP TỤC như được hiển thị bên dưới hoặc EXIT để chấm dứt khối BEGIN END mà nó là một phần của. Trong MySQL, quy trình Oracle ở trên có thể trông như thế này

CREATE TABLE EVENTS
  (EV_ID INT,
   DESCRIPTION VARCHAR(240),
   START_DATE DATETIME,
   END_DATE DATETIME,
   ATTENDANCE_COST NUMERIC
  );
CREATE TABLE MEMBERS
  (MEM_ID INT,
   FIRST_NAME VARCHAR(80),
   LAST_NAME VARCHAR(80),
   EMAIL VARCHAR(240)
  );
  CREATE TABLE REGISTRATIONS
  (EV_ID INT,
   MEM_ID INT,
   REG_DATE DATETIME DEFAULT CURRENT_TIMESTAMP
  );
3

Phần kết luận

Không có chuyển đổi tự động dễ dàng từ Oracle sang MySQL

MySQL có các tính năng cơ bản tương đương với cơ sở dữ liệu Oracle, mặc dù cú pháp hơi khác đối với nhiều thứ. Cú pháp của các trình kích hoạt, chức năng và thủ tục hơi khác nhưng dễ điều chỉnh. Cú pháp cho các trình xử lý ngoại lệ khá khác nhau và chúng được đặt khác nhau trong mã, vì vậy sẽ cần suy nghĩ một chút để điều chỉnh chúng cho MySQL

Sự khác biệt lớn và yếu tố quyết định tiềm năng khi cân nhắc di chuyển là lượng PL/SQL trong ứng dụng của bạn. Việc thiếu nhiều gói tích hợp mạnh mẽ mà bạn tìm thấy trong Oracle và ngôn ngữ lập trình đơn giản hơn không có cấu trúc như vòng lặp FOR con trỏ có nghĩa là nếu bạn có nhiều PL/SQL, bạn sẽ phải đối mặt với một nhiệm vụ lớn khi chuyển sang MySQL.  

Thẻ. tiên tri

Làm cách nào để chuyển đổi Oracle SQL sang MySQL?

Được viết bởi

Sten Vesterli là Giám đốc ACE của Oracle và là nhà phát triển, tư vấn và huấn luyện viên chính chuyên về các công cụ và máy chủ của Oracle. Ông là tác giả của cuốn sách có tên "Oracle ADF Enterprise Application Development—Made Simple," do Packt Publishing xuất bản

Làm cách nào để chuyển đổi cơ sở dữ liệu Oracle sang MySQL?

Phương pháp 2. Di chuyển Oracle sang MySQL theo cách thủ công .
Đăng nhập vào MySQL bằng thông tin đăng nhập của bạn
Khởi chạy tùy chọn cho nguồn dữ liệu Trình kết nối ODBC
Thiết lập nguồn dữ liệu Oracle ODBC cho cơ sở dữ liệu MySQL của bạn

Làm cách nào để chuyển đổi truy vấn Oracle thành truy vấn MySQL?

Công cụ chuyển đổi SQL của SQLines cho phép bạn chuyển đổi lược đồ cơ sở dữ liệu (DDL), truy vấn và câu lệnh DML, chế độ xem, thủ tục được lưu trữ, chức năng và trình kích hoạt từ Oracle sang MySQL. Công cụ SQLines chuyển đổi các tập lệnh SQL và các câu lệnh SQL độc lập. Để di chuyển dữ liệu và lược đồ cơ sở dữ liệu từ cơ sở dữ liệu Oracle, hãy sử dụng công cụ Dữ liệu SQLines.

Làm cách nào để di chuyển thủ tục lưu sẵn của Oracle sang MySQL?

Chuyển thủ tục từ Oracle® sang Cloud SQL cho MySQL .
Trên trang này
Nhập các thủ tục, chức năng và trình kích hoạt được lưu trữ. khối ẩn danh. Cấu trúc chung của thủ tục lưu sẵn. Thực hiện thủ tục lưu trữ. .
Xác minh cấu hình phù hợp. xác minh kích thước. hiệu suất điểm chuẩn. .
Tối ưu hóa cấu hình của bạn cho Cloud SQL

Oracle SQL và MySQL có giống nhau không?

MySQL và Oracle SQL đều là RDBMS (hệ thống quản lý cơ sở dữ liệu quan hệ) thuộc sở hữu của Tập đoàn Oracle . MySQL được xây dựng chủ yếu là miễn phí và mã nguồn mở, trong khi Oracle chủ yếu được xây dựng để thương mại và trả phí. MySQL cũng dễ tùy biến hơn Oracle, đó là vì Oracle là một sản phẩm hoàn chỉnh.