我正在編寫一個PHP腳本,它將兩個不同數據庫中表的數據導入到另一個數據庫中。除了現在我已經開始使用更接近它的最終用途的數據:每張表格有2500多萬條記錄,並且每天都在增長,我已經可以使用示例數據了。顯然,效率有點令人擔憂。將數據從一個MySQL數據庫導入到另一個數據庫的最有效方法
以下是當前的工作原理。我複製表結構,增加一對額外的域來維護密鑰完整性:
other1.someTable (field1, field2, field3) Pk = [field1, field2]
other2.someTable (field1, field2, field3) Pk = [field1, field2]
mydb.someTable (id, source, field1, field2, field3)
Pk = id, Unique key = [source, field1, field2]
而這裏的SQL。它有一個ON DUPLICATE KEY UPDATE
語句,因爲此導入需要定期完成,更新「mydb」中的數據。謝天謝地,記錄不會從「其他」數據庫中刪除(我想!)。
INSERT INTO mydb.someTable (source, field1, field2, field3)
SELECT 1, field1, field2, field3 FROM other1.someTable
ON DUPLICATE KEY UPDATE field1 = field1, field2 = field2, field3 = field3;
INSERT INTO mydb.someTable (source, field1, field2, field3)
SELECT 2, field1, field2, field3 FROM other2.someTable;
ON DUPLICATE KEY UPDATE field1 = field1, field2 = field2, field3 = field3;
我的問題是這樣的:這可能是最好的方式做到這一點?考慮到將會有數百萬和數百萬條記錄,每個表中總共有幾千兆字節的數據,是否還有其他方法可能會更快?
你有shell嗎?有一個名爲mysqldump的MySQL工具。 – powtac 2009-11-19 01:46:01