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','sten@vesterli.com'];
insert into MEMBERS [MEM_ID,FIRST_NAME,LAST_NAME,EMAIL]
values ['2','Larry','Ellison','larry.ellison@oracle.com'];
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','sten@vesterli.com'];
insert into MEMBERS [MEM_ID,FIRST_NAME,LAST_NAME,EMAIL]
values ['2','Larry','Ellison','larry.ellison@oracle.com'];
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 => 'registration@conference.org'
, 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 EVENTS0
[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
];
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 EVENTS1
[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
];
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 EVENTS2
[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
];
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 EVENTS3
[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
];
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
Đượ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