php自動備份資料庫表的方法

來源:互聯網
上載者:User
下面小編就為大家帶來一篇使用php自動備份資料庫表的實現方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1、前言

mysql資料庫的備份方式有很多;

例如:

1、使用mysqldump函數

mysqldump -u username -p dbname table1 table2 ... > BackupName.sql

dbname參數表示資料庫的名稱

table1和table2參數表示需要備份的表的名稱,為空白則整個Database Backup;

BackupName.sql參數表設計備份檔案的名稱,檔案名稱前面可以加上一個絕對路徑。通常將資料庫被分成一個尾碼名為sql的檔案;

基本使用:

2、管理工具

備份資料庫的方法很多,上面兩種比較常見

而本次主要講解如何通過php函數來自動備份資料庫

2、相關函數介紹

2.2、array_keys

2.3、array_values

2.4、implode

2.5、substr

2.6、fwrite


3、實現思路

4、代碼構成


/** * [copyDb description] 備份資料庫 * @param [type] $dbname [description] 資料庫名 * @param [type] $fileName [description] 儲存的檔案名稱 * @return [type]   [description] */public function copyDb($dbname, $fileName){$myfile = fopen($fileName, "w") or die("Unable to open file!");//開啟隱藏檔$this->link->query("use {$dbname}");//切換資料庫$this->changeDb($dbname);$tables = $this->link->query('show tables');//擷取當期資料庫所有表名稱while($re = $tables->fetch(PDO::FETCH_ASSOC)){//var_dump($re);//查看數組構成$tableName = $re['Tables_in_'.$dbname];//構成特定的下標$sql = "show create table {$tableName};";$tableSql = $this->link->query($sql);fwrite($myfile, "DROP TABLE IF EXISTS `{$tableName}`;\r\n");//加入預設刪除表的遇見//下面備份表結構,這個迴圈之執行一次while($re = $tableSql->fetch(PDO::FETCH_ASSOC)){// echo "<pre>";// var_dump($re);// echo "</pre>";echo "正在備份表{$re['Table']}結構<br/>";fwrite($myfile, $re['Create Table'].";\r\n\r\n");echo "正在備份表{$re['Table']}結構完成<br/>";}//下面備份表資料echo "正在備份表{$tableName}資料<br/>";$sql = "select * from {$tableName};";$valueSql = $this->link->query($sql);while($re = $valueSql->fetch(PDO::FETCH_ASSOC)){$keyArr = array_keys($re);//獲得對應的索引值$valueArr = array_values($re);//獲得對應的值$keyStr = '';foreach ($keyArr as $key => $value) {$keyStr .= "`".$value."`,";}$keyStr = substr($keyStr,0,strlen($keyStr)-1); //取出最後一個逗號$valueStr = '';// var_dump($valueArr);foreach ($valueArr as $key => $value) {$valueStr .= "'".$value."',";}//以上的處理只是對應sql的寫法$valueStr = substr($valueStr,0,strlen($valueStr)-1); //取出最後一個逗號$sql = "insert into `{$tableName}`({$keyStr}) values({$valueStr})";fwrite($myfile, $sql.";\r\n\r\n");}echo "正在備份表{$tableName}資料完成<br/>";echo "<br/><hr/>";}fclose($myfile);}


5、結語

備份資料庫的主要過程:

切換到對應的資料庫;

使用show create table tableName,獲得表結構,寫到檔案中;

然後查詢所有的表資料,迴圈產生相對應sql語句,寫到檔案中;

試運行產生的sql檔案;

以上這篇使用php自動備份資料庫表的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考。


相關推薦:

mysql如何將Database Backup與匯入

mysqlDatabase Backup的幾種方法

沒有虛擬機器主機的小型MysqlDatabase Backup指令碼


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.