2011-10-12 47 views
8

我有一個很大的轉儲(幾十GB),我想將它導入到一個新表中,而不考慮ENGINE = INNODB參數。如何在導入MySQL轉儲文件時覆蓋ENGINE = INNODB參數?

我嘗試了幾個編輯器專門用於處理大文件來編輯轉儲,但總是需要很多時間來保存修改,所以忽略ENGINE = INNODB參數並重寫它會更有意義(例如與默認引擎)。

因爲InnoDB導入轉儲的速度非常慢,導入並更改引擎將不會成爲選項,因此需要幾天的時間。

回答

5

如果你是在Linux/Unix系統怎麼樣的到位編輯與sed的

sed -i 's/ENGINE=INNODB/ENGINE=MYISAM/g' filename 
+3

值得一提的是,萬一一些數據庫中的數據實際上包含文本「ENGINE = INNODB」,該命令會破壞數據。 – Asaph

+1

@Asaph - 好點。 –

+3

使用'sed -i -re's/^(\ ENGINE ENGINE =)INNODB/\ 1MyISAM/gi'',它應該是安全的,因爲在實際數據中不應該有未編碼的換行符。 –

7

mysqldump --compatible=no_table_options

工作對我來說