2012-03-22 178 views
0

這可能聽起來像一個愚蠢的問題,但在谷歌上找不到任何東西,可能使用了錯誤的關鍵詞。在不重新創建MySQL表的情況下恢復數據

無論如何,我一直在研究一個項目 - 版本1,它有一個MySQL數據庫。我準備發佈到版本2,但數據庫表格有變化,例如額外的列。

如果我用數據備份當前數據庫並使用新結構創建數據庫。我如何將舊數據庫中的數據添加到新數據庫中。

我知道現有的數據被添加到新的數據庫結構中沒有任何問題,因爲現有的字段沒有改變,只是額外的列。

感謝您的幫助。

+0

使用PHP – hjpotter92 2012-03-22 21:37:50

+0

會更容易,您爲什麼需要重新創建數據庫?爲什麼不把這些列添加到現有字段中,如下所述。 – Robert 2012-03-22 21:41:20

回答

1

我在這種情況下使用mysqldumpsome addition keys,像

mysqldump --host=localhost --user=root --no-create-db --no-create-info --complete-insert --extended-insert 

這將產生與列名的完整的插入,所以你可能擔心最終的表結構,如果你沒有更改列名稱,在這種情況下甚至可能會更改列的順序。

1

考慮使用ALTER TABLE來解決此問題。

,關鍵是要採取新的領域在數據庫中,並把它們添加到您的實體的結束,像這樣: ALTER TABLE myTable ADD COLUMN myColumn (... further specification ...)

MySQL將展開表,並設置新的字段到您指定的默認值。正如您所描述的,只要沒有衝突,您就可以將任何新數據覆蓋在舊數據之上。

選擇B,當在線解決方案昂貴時,使用mysqldump,然後更改輸出以適應新的表格規範。只要列對齊正確(在最糟糕的情況下,這可能需要一個簡單的正則表達式來解析),您應該可以通過importing將數據重新創建到新模式中。

另請參閱,this answer

+0

請解釋! – hjpotter92 2012-03-22 21:39:12

+1

這將涉及通過每個單一表並添加所有更改以匹配開發機器。我正在尋找更簡單的1步解決方案。即恢復新的數據庫結構並從舊數據庫導入現有數據 – Boardy 2012-03-22 21:41:49

+0

@Boardy我會更新我的答案。支持。 – MrGomez 2012-03-22 21:42:59

相關問題