我有一個很大的轉儲(幾十GB),我想將它導入到一個新表中,而不考慮ENGINE = INNODB參數。如何在導入MySQL轉儲文件時覆蓋ENGINE = INNODB參數?
我嘗試了幾個編輯器專門用於處理大文件來編輯轉儲,但總是需要很多時間來保存修改,所以忽略ENGINE = INNODB參數並重寫它會更有意義(例如與默認引擎)。
因爲InnoDB導入轉儲的速度非常慢,導入並更改引擎將不會成爲選項,因此需要幾天的時間。
我有一個很大的轉儲(幾十GB),我想將它導入到一個新表中,而不考慮ENGINE = INNODB參數。如何在導入MySQL轉儲文件時覆蓋ENGINE = INNODB參數?
我嘗試了幾個編輯器專門用於處理大文件來編輯轉儲,但總是需要很多時間來保存修改,所以忽略ENGINE = INNODB參數並重寫它會更有意義(例如與默認引擎)。
因爲InnoDB導入轉儲的速度非常慢,導入並更改引擎將不會成爲選項,因此需要幾天的時間。
如果你是在Linux/Unix系統怎麼樣的到位編輯與sed的
sed -i 's/ENGINE=INNODB/ENGINE=MYISAM/g' filename
mysqldump --compatible=no_table_options
工作對我來說
值得一提的是,萬一一些數據庫中的數據實際上包含文本「ENGINE = INNODB」,該命令會破壞數據。 – Asaph
@Asaph - 好點。 –
使用'sed -i -re's/^(\ ENGINE ENGINE =)INNODB/\ 1MyISAM/gi'',它應該是安全的,因爲在實際數據中不應該有未編碼的換行符。 –