2013-08-22 76 views
2

是否有可能使用WHERE條件備份MySQL表?
例如,
我有一個日期和時間列的表。MySQL備份與WHERE條件

現在我想用date> ='2013-08-01'來備份那張表。

我想到的是將我需要的數據選擇到臨時表中,然後備份臨時表。

有沒有其他辦法?

回答

4
TRY this : 

$db_user = "username"; 
$db_pass = "password"; 

exec("mysqldump --opt -u$db_user -p$db_pass --no-create-info --where date >= '2013-08-01' my_database my_table > backup.sql"); 
+0

完美地工作,謝謝! –

+0

不起作用 - 執行進入無限循環。 – user1051505

0

是有可能備份MySQL表用WHERE條件

嘗試下面的查詢

select * --specify column name or back up every column 
into back_up_table 
from table_name 
where date >= '2013-08-01' 
+0

我知道如何選擇where條件的數據到臨時表,然後備份臨時表。 我需要知道的是,如果有另一種方式,例如mysqldump與哪裏條件。 –

1

這可能會幫助你試試這個 爲了爲此,您需要將mysqldump.exe和mysql.exe從MySQL bin Program Files文件夾複製到s中ame目錄作爲執行的PHP腳本。如果您知道服務器的直接路徑,則可以使用這些路徑。

// Config 
    $db_user = "db_username"; 
    $db_pass = "db_pass"; 

    // Dump an entire database 
    exec("mysqldump --opt -u$db_user -p$db_pass my_database > backup.sql"); 

    // Dump a table 
    exec("mysqldump --opt -u$db_user -p$db_pass my_database my_table > backup.sql"); 

    // Dump just table rows without structure 
    exec("mysqldump --opt -u$db_user -p$db_pass --no-create-info my_database my_table > backup.sql"); 

    // Dump just table rows with WHERE clause without structure 
    exec("mysqldump --opt -u$db_user -p$db_pass --no-create-info --where=id='1' my_database my_table > backup.sql"); 

    // Restoring from .sql file 
    exec("mysql -u$db_user -p$db_pass my_database < backup.sql"); 

注意。 exec()函數以mysqldump開頭;例如,如果您不允許從bin文件夾複製兩個必需的文件,則可以將其替換爲C:Program FilesMySQLbinmysqldump.exe。

+0

請參閱此鏈接http://www.it-iss.com/mysql/mysql-mysqldump-where-clause/ – krishna