2016-09-07 82 views
1

我有一個有三個表的數據庫。 我想在第二個表中創建的一些記錄備份文件:從單表查詢備份恢復mysql

mysqldump --opt --user=${USER} --password=${PASS} --databases ${DATABASE} --where="id = $1" mydb Table2 > FILE.sql 

的問題是在恢復使用此代碼。

mysql --user=${USER} --password=${PASS} ${DATABASE} < FILE.sql 

它刪除整個數據庫,並只插入我從前面的代碼中選擇的記錄。 我只希望選定的記錄恢復而不刪除其餘部分。

+0

你試過從FILE.sql一個運行單個查詢一? –

+0

當你說它正在刪除整個數據庫 - 它實際上是在重新創建表嗎?不是數據庫? – JamieB

+0

只用查詢的值重新創建第二個表。 – Andrea485

回答

0

您正在使用[--databases][1]標誌,該標誌在轉儲多個數據庫時使用,不應在僅轉儲單個表時使用。

轉儲多個數據庫。通常,mysqldump將命令行中的名稱 作爲數據庫名稱,後面的名稱作爲 表名稱。使用此選項,它將所有名稱參數視爲 數據庫名稱。 CREATE DATABASE和USE語句包含在每個新數據庫之前的 輸出中。

避免使用這樣的說法和好措施使用--no-create-info或者乾脆-t代替,以確保創建表/ DROP TABLE命令不轉儲文件

+0

謝謝你最後一件事,當我運行恢復時出現此錯誤: 重複鍵'PRIMARY'的條目'506' 我該如何強制恢復所有項目? – Andrea485

+0

這是因爲您的表中已經存在具有該主鍵的記錄。事實上,這在之前已經被問及過。一種解決方案是加載到一個臨時表,然後做INSERT IGNORE ... SELECT – e4c5

+0

解決,添加 - 替換 – Andrea485