2015-05-14 71 views
0

這裏我想將數據庫導出爲.sql格式。我嘗試了SELECT * INTO OUTFILE --- FROM ---命令,但它只返回記錄不是整個表的結構。 代碼是使用OUTFILE命令將mysql數據庫導出爲.sql格式

<?php 
 
//include("db.php"); 
 

 
$dbhost = 'localhost'; 
 
$dbuser = 'root'; 
 
$dbpass = ''; 
 
$conn = mysql_connect($dbhost, $dbuser, $dbpass); 
 
if(! $conn) 
 
{ 
 
    die('Could not connect: ' . mysql_error()); 
 
} 
 
mysql_select_db('ganga_hms'); 
 
$table_name = "accountant"; 
 
$backup_file = "C:/xampp/htdocs/FinalHMS/accountant.sql"; 
 
$sql = "SELECT * INTO OUTFILE '$backup_file' FROM $table_name"; 
 

 
$retval = mysql_query($sql, $conn); 
 
if(! $retval) 
 
{ 
 
    die('Could not take data backup: ' . mysql_error()); 
 
} 
 
echo "Backedup data successfully\n"; 
 
mysql_close($conn); 
 
?>

但是我想導出表及其結構。 並且還建議我如何使用php導出整個數據庫。

+0

您可能需要mysqldump。 – Tim3880

回答

0

有幾個問題。 OUTFILE命令將把選定的列作爲帶有標題的分隔數據吐出,這些標題稍後可以與INFILE命令一起用於再次導入數據。 文件擴展名「* .sql」通常是指SQLDUMP,它不是你正在做的事情。使用OUTFILE/INFILE通常會生成一個文本文件( .txt)。*

如果您真的想要執行表/數據庫備份,您需要使用mySQL的內置工具來轉儲表( s)及其數據傳輸到包含drop命令,表格描述(重新創建它)和一系列insert命令以恢復數據的文件。
參考:https://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

如果你試圖做到它programmically,這將是很多工作,重新發明輪子。您可以使用多個shell之一來腳本化數據庫及其表的備份。 參考:http://www.thegeekstuff.com/2008/09/backup-and-restore-mysql-database-using-mysqldump/

希望這有助於!

相關問題