2017-03-15 25 views
1

存在爲題指出,我試圖用mysqldump創建一個包含用的mysqldump如果沒有1臺

CREATE DATABASE IF NOT EXISTS 

但只輸出表的文件創建數據庫。我已經嘗試了--databases,--tables等的多種組合,但是我無法得到它添加IF NOT EXISTS部分(它在那裏但是被註釋掉了),而且它似乎只適用於輸出所有的表格。可能嗎?

有些事情我已經試過:

添加CREATE DATABASE(但不包括IF NOT EXISTS部分),但輸出的所有表:

mysqldump --host=<host> --user=<u> --password=<p> --port=<port> --verbose --single-transaction --add-drop-table --create-options --databases BBI > outfile.sql 

輸出1個表,但沒有CREATE DATABASE:

mysqldump --host=<host> --user=<u> --password=<p> --port=<port> --verbose --single-transaction --add-drop-table --create-options BBI table1 > outfile.sql 

給出了錯誤:

mysqldump --host=<host> --user=<u> --password=<p> --port=<port> --verbose --single-transaction --add-drop-table --create-options --databases BBI.table1 > outfile.sql 

我將不得不訴諸使用

--ignore-table=<table> 

選項爲每個表一個我不想要?這將是一個巨大的痛苦。

回答

0

我能夠想出一個解決方法。上述命令使用exec()從PHP腳本執行。我將腳本改爲首先做一個

show create database BBI 

查詢。然後它修改從那個返回的語句來添加IF NOT EXISTS部分和USE BBI;聲明。然後運行上面的第二個mysqldump語句,輸出1個表,但沒有CREATE DATABASE。然後它將CREATE DATABASE語句預加載到來自mysqldump的輸出文件的開頭,並且一切正常。