2016-12-03 48 views
1

我試圖將數據從MySQL數據庫(5.6.32-78)移動到Oracle數據庫(11g)。使用mysqldump時,在oracle中創建表時,輸出會導致「缺少右括號」錯誤。即... mysqldump的輸出:mysqldump輸出不是一個有效的Oracle「創建表」格式

CREATE TABLE "table1" (
    "ID" int(11) NOT NULL, 
    "column1" int(11) NOT NULL DEFAULT '0', 
    "column2" varchar(255) NOT NULL DEFAULT '', 
    PRIMARY KEY ("ID") 
); 

甲骨文期待以下(在NOT NULL和DEFAULT的順序切換):

CREATE TABLE "table1" (
    "ID" int(11) NOT NULL, 
    "column1" int(11) DEFAULT '0' NOT NULL, 
    "column2" varchar(255) DEFAULT '' NOT NULL, 
    PRIMARY KEY ("ID") 
); 

是有我丟失糾正這一個選項?我有幾百張桌子可以移動,不想通過編寫程序來「重新發明輪子」來獲得正確的輸出。 (--compatible = oracle沒有任何區別)。 謝謝。 Doug


我會嘗試使問題更具體。

我想將MySQL遷移到Oracle數據庫,並嘗試使用mysqldump和各種選項,但它不會生成Oracle可用輸出。我不能使用Oracle的SQL Developer,因爲它需要同時連接到MySQL數據庫(互聯網)和Oracle數據庫(在「無互聯網訪問」防火牆內)。有沒有人知道創建Oracle友好的MySQL數據庫導出的方法?

+2

mysql和oracle在很多方面都是兩種不同的動物 –

回答

2

訂單NOT NULLDEFAULT只是您將要面對的一個問題。 MySQL和Oracle之間有許多不同之處,不能用mysqldump選項修復。

http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_compatible說:

該選項並不能保證與其它服務器的兼容性。它只啓用當前可用於使轉儲輸出更加兼容的SQL模式值。例如,--compatible=oracle不會將數據類型映射到Oracle類型或使用Oracle註釋語法。

因此,您必須在將轉儲文件導入Oracle之前手動編輯一些轉儲文件。

您最好使用Oracle SQL Developer將您的MySQL數據庫遷移到Oracle。您可以在這裏找到帶有視頻的分步指南:http://www.oracle.com/technetwork/database/migration/index.html

請注意,可以通過單擊其他商用RDBMS產品列表下方的鏈接「and others ...」來找到MySQL的步驟。這裏有一個直接鏈接:http://www.oracle.com/technetwork/database/migration/mysql-093223.html

+0

謝謝比爾。我確實讀過並嘗試了幾乎所有可用的mysqldump選項,以獲得所需的DDL,但沒有成功。我知道使用mysqldump的免責聲明。我無法使用SQL Developer選項,因爲Oracle數據庫位於「從不連接到互聯網」防火牆後面,而藍色主機上的MySQL數據庫(無法同時連接到兩個防火牆)。我很好奇,如果有人已經使用mysqldump成功完成了MySQL到Oracle的遷移。我的選擇是寫一個DDL包或者在防火牆內設置一個mySQL數據庫,然後導入到這個數據庫中。 – Doug