2016-06-20 185 views
0

上個月我從mysqldump數據庫獲得了一個sql文件。現在,在數據庫中的所有表都添加一個額外的列,說:mysql:爲插入設置列默認值

country varchar(20) not null. 

如何導入轉儲文件與國家數據庫設置爲「美國」?該數據庫有來自其他國家的數據,因此數據庫不能被刪除和重新創建。

手動我需要做兩兩件事來轉儲SQL文件:

1. remove all create table statements, 
2. add country("US") to all insert statements. 

但SQL轉儲文件是巨大的。有沒有一個很好的方法來實現這一目標? 謝謝。

+1

的轉儲文件不包含列'country',對不對?你想在所有的值爲'US'的表中添加'country'列嗎?我對嗎? – 1000111

+0

執行此操作的最簡單的方法可能是爲「country」列設置默認值,但這需要您可以發出「ALTER TABLE」語句,並且值「US」對每個人都是可取的。 –

+0

我會找到與此相關的N個表,將轉儲複製到另一個文件名。使用find-and-replace-all將這些表名調整爲那些N的新表名。注意,這些將是新的表名。運行該腳本。現在你的數據庫有N個只有美國的新表。繼續。繼續意思是你之後的意思是做什麼(比如,插入其他表格?插入到其他表格上?美國作爲插入文字?) – Drew

回答

0

ALTER TABLE your_table ADD國家VARCHAR(20),默認的 「US」

+0

數據庫運行在Web應用程序後面,許多用戶在同一時間訪問它。它涉及大約200張桌子。改變表格安全嗎?有沒有任何編程方式(工具)來處理轉儲的sql文件?謝謝。 – Dave

+0

我認爲alter_table是最好的選擇。使用較少的用戶在幾個小時內完成您的操作,並使用日誌記錄轉儲期間的查詢。您可以使用腳本遍歷所有表並進行更新。如果你沒有你的操作日誌,你可以在unix下使用diff比較兩個文件之間的差異,保存差異並使查詢具有更新的數據庫 – CiroRa