MySQL與Oracle是兩個(gè)常見(jiàn)的數(shù)據(jù)庫(kù),它們?cè)跀?shù)據(jù)結(jié)構(gòu)、SQL語(yǔ)言等方面有很多不同之處。但有時(shí)候,我們需要將MySQL數(shù)據(jù)庫(kù)的數(shù)據(jù)導(dǎo)入到Oracle中,這時(shí)候該怎么做呢?本文將基于Oracle數(shù)據(jù)庫(kù)版本為12c和MySQL版本為5.7,介紹如何將MySQL數(shù)據(jù)導(dǎo)入到Oracle中。
首先,我們來(lái)看一個(gè)具體的場(chǎng)景,假設(shè)我們有一個(gè)MySQL數(shù)據(jù)庫(kù),其中有一個(gè)order表,包含以下數(shù)據(jù):
+----+-------+--------+--------+ | id | name | price | amount | +----+-------+--------+--------+ | 1 | 蘋果 | 10.00 | 20 | | 2 | 香蕉 | 5.00 | 30 | | 3 | 西瓜 | 20.00 | 10 | | 4 | 葡萄 | 15.00 | 15 | +----+-------+--------+--------+
我們想將這個(gè)表中的數(shù)據(jù)導(dǎo)入到Oracle數(shù)據(jù)庫(kù)中。首先,我們需要在Oracle數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)與order表結(jié)構(gòu)相同的表。在Oracle數(shù)據(jù)庫(kù)中,可以使用以下語(yǔ)句創(chuàng)建這個(gè)表:
CREATE TABLE order ( id NUMBER(10), name VARCHAR2(50), price NUMBER(10,2), amount NUMBER(10) );
這樣,我們就創(chuàng)建了一個(gè)名為order的表,它與MySQL的order表結(jié)構(gòu)相同。接下來(lái),我們需要將MySQL的order表中的數(shù)據(jù)導(dǎo)入到這個(gè)Oracle表中。
對(duì)于小型表,可以使用SQL語(yǔ)句將數(shù)據(jù)從MySQL中導(dǎo)出為CSV文件,再將CSV文件導(dǎo)入到Oracle中。以下是導(dǎo)出CSV文件的MySQL語(yǔ)句:
SELECT id, name, price, amount INTO OUTFILE '/tmp/order.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM order;
其中,/tmp/order.csv是導(dǎo)出的CSV文件路徑,F(xiàn)IELDS TERMINATED BY ','和OPTIONALLY ENCLOSED BY '"'是CSV文件的格式選項(xiàng),\n是換行符。執(zhí)行該語(yǔ)句后,MySQL會(huì)將order表中的數(shù)據(jù)導(dǎo)出到/tmp/order.csv文件中。
接下來(lái),我們可以使用Oracle的SQL Loader工具將這個(gè)CSV文件導(dǎo)入到Oracle中,以下是導(dǎo)入CSV文件的Oracle語(yǔ)句:
LOAD DATA INFILE '/tmp/order.csv' INTO TABLE order FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (id, name, price, amount)
其中,/tmp/order.csv是CSV文件的路徑,F(xiàn)IELDS TERMINATED BY ','和OPTIONALLY ENCLOSED BY '"'是CSV文件的格式選項(xiàng),TRAILING NULLCOLS表示允許導(dǎo)入空值,(id, name, price, amount)是要導(dǎo)入的列名。執(zhí)行該語(yǔ)句后,Oracle會(huì)將CSV文件中的數(shù)據(jù)導(dǎo)入到order表中。
當(dāng)然,對(duì)于大型表,使用CSV文件進(jìn)行數(shù)據(jù)導(dǎo)入可能會(huì)有性能問(wèn)題,這時(shí)候可以使用一些第三方工具來(lái)進(jìn)行數(shù)據(jù)導(dǎo)入。例如,可以使用Oracle自帶的SQL Developer軟件,或是使用第三方的工具如ODBC等。
總之,將MySQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)入到Oracle數(shù)據(jù)庫(kù)中并不難,只需要先創(chuàng)建一個(gè)與MySQL表結(jié)構(gòu)相同的Oracle表,再使用SQL語(yǔ)句或第三方工具將數(shù)據(jù)導(dǎo)入到Oracle表中即可。希望本文能為大家解決MySQL導(dǎo)入Oracle的疑惑。