簡體   English   中英

Mysql還原以恢復結構並且沒有來自給定備份的數據(schema.sql)

[英]Mysql restore to restore structure and no data from a given backup (schema.sql)

嗨我使用mysql管理員並恢復了備份文件(backup.sql)。 我想使用恢復沒有數據的結構,它沒有給我一個選項。 我知道phpadmin提供了這個。 但是,我無法使用它。 任何人都能告訴我一個簡單的方法嗎?

僅轉儲數據庫結構:

cat backup.sql | grep -v ^INSERT | mysql -u $USER -p

這將執行backup.sql文件中的所有內容,除了將填充表的INSERT行。 運行之后,您應該擁有完整的表結構以及原始數據庫中的任何存儲過程/視圖/等,但是您的表都將為空。

您可以使用sed將轉儲中的ENGINE更改為BLACKHOLE

cat backup.sql | sed 's/ENGINE=(MYISAM|INNODB)/ENGINE=BLACKHOLE/g' > backup2.sql

這個引擎只會“吞下”INSERT語句,表格將保持為空。 當然,您必須使用以下方法再次更改ENGINE:

ALTER TABLE `mytable` ENGINE=MYISAM;

IIRC backup.sql文件(如果由mysqldump創建)只是文本文件中的SQL命令。 只需從文件的開頭復制粘貼所有“create ...”語句,但不要將“insert”語句復制到另一個文件中,而“mysql <newfile”則應該沒有任何數據的空數據庫。

沒有辦法告訴mysql客戶端跳過INSERT命令。 最簡單的方法是按原樣運行腳本並讓它加載數據,然后只是TRUNCATE所有表。

您可以編寫腳本來執行以下操作:

1:將轉儲導入新數據庫。

2:用循環截斷所有表。

3:再次導出數據庫。

4:現在你只有結構

您可以使用備份MYSQL數據庫結構

mysqldump -u username –p  -d database_name > backup.sql

(您不應該在命令行提供密碼,因為它會導致安全風險。默認情況下,MYSQL會要求輸入密碼。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM