我使用mysqldump將兩個相同的數據庫(表名和表結構相同)導出到兩個.sql文件中。我想將它們合併成一個文件。但是,兩個數據庫在每個表之前都有一個「Drop table」行。這意味着如果我導入db1,然後導入db2,那麼在導入db2表之前,db1表會被刪除。MySQL導入 - 如何忽略刪除表如果存在行?
文件很大,我無法在編輯器中打開它們。另外,每個數據庫中有50個表格。
如何在mysql導入過程中忽略Drop table命令?
我使用mysqldump將兩個相同的數據庫(表名和表結構相同)導出到兩個.sql文件中。我想將它們合併成一個文件。但是,兩個數據庫在每個表之前都有一個「Drop table」行。這意味着如果我導入db1,然後導入db2,那麼在導入db2表之前,db1表會被刪除。MySQL導入 - 如何忽略刪除表如果存在行?
文件很大,我無法在編輯器中打開它們。另外,每個數據庫中有50個表格。
如何在mysql導入過程中忽略Drop table命令?
如果你不想讓轉儲再次和你使用Linux,你可以去:
awk '!/^DROP TABLE IF EXISTS/{print}' <dump.file> | mysql <db_name>
如果你想再次轉儲數據,您應該通過--skip-add-drop-table
到mysqldump的效用。
我想我不明白爲什麼DROP TABLE語句應該有問題,或者爲什麼您需要合併兩個IDENTICAL數據庫的轉儲。
也就是說,你應該在初始轉儲中不添加DROP TABLE。這將通過標誌使用您的mysqldump命令被控制在http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html
這在機制的文檔指出可能意味着你需要的,如果你正在使用默認選項(默認是彷彿--opt
標誌傳遞運行)使用--skip-opt
標誌。然後您需要指定您仍然想使用的--opt
內的所有標誌。
這些轉儲無法重新創建。從結構上講,它們是相同的。 – zenCoder
當您使用mysqldump
時,您只需要添加--skip-add-drop-table
選項。
$ mysqldump --databases --skip-add-drop-table -u root db1 > /tmp/qqq.2
所以,他們也不會在sql
DROP TABLE IF EXISTS
文件。
編輯文件和評論這些sommands - > http://dev.mysql.com/doc/refman/5.1/en/comments.html – krokodilko
的文件是巨大的。將無法在編輯器中打開它們。另外,每個數據庫中有50個表格。 – zenCoder