這可能聽起來像一個愚蠢的問題,但在谷歌上找不到任何東西,可能使用了錯誤的關鍵詞。在不重新創建MySQL表的情況下恢復數據
無論如何,我一直在研究一個項目 - 版本1,它有一個MySQL數據庫。我準備發佈到版本2,但數據庫表格有變化,例如額外的列。
如果我用數據備份當前數據庫並使用新結構創建數據庫。我如何將舊數據庫中的數據添加到新數據庫中。
我知道現有的數據被添加到新的數據庫結構中沒有任何問題,因爲現有的字段沒有改變,只是額外的列。
感謝您的幫助。
這可能聽起來像一個愚蠢的問題,但在谷歌上找不到任何東西,可能使用了錯誤的關鍵詞。在不重新創建MySQL表的情況下恢復數據
無論如何,我一直在研究一個項目 - 版本1,它有一個MySQL數據庫。我準備發佈到版本2,但數據庫表格有變化,例如額外的列。
如果我用數據備份當前數據庫並使用新結構創建數據庫。我如何將舊數據庫中的數據添加到新數據庫中。
我知道現有的數據被添加到新的數據庫結構中沒有任何問題,因爲現有的字段沒有改變,只是額外的列。
感謝您的幫助。
我在這種情況下使用mysqldump
與some addition keys,像
mysqldump --host=localhost --user=root --no-create-db --no-create-info --complete-insert --extended-insert
這將產生與列名的完整的插入,所以你可能不擔心最終的表結構,如果你沒有更改列名稱,在這種情況下甚至可能會更改列的順序。
考慮使用ALTER TABLE
來解決此問題。
,關鍵是要採取新的領域在數據庫中,並把它們添加到您的實體的結束,像這樣: ALTER TABLE myTable ADD COLUMN myColumn (... further specification ...)
MySQL將展開表,並設置新的字段到您指定的默認值。正如您所描述的,只要沒有衝突,您就可以將任何新數據覆蓋在舊數據之上。
選擇B,當在線解決方案昂貴時,使用mysqldump,然後更改輸出以適應新的表格規範。只要列對齊正確(在最糟糕的情況下,這可能需要一個簡單的正則表達式來解析),您應該可以通過importing將數據重新創建到新模式中。
另請參閱,this answer。
請解釋! – hjpotter92 2012-03-22 21:39:12
這將涉及通過每個單一表並添加所有更改以匹配開發機器。我正在尋找更簡單的1步解決方案。即恢復新的數據庫結構並從舊數據庫導入現有數據 – Boardy 2012-03-22 21:41:49
@Boardy我會更新我的答案。支持。 – MrGomez 2012-03-22 21:42:59
使用PHP – hjpotter92 2012-03-22 21:37:50
會更容易,您爲什麼需要重新創建數據庫?爲什麼不把這些列添加到現有字段中,如下所述。 – Robert 2012-03-22 21:41:20