thinkphp5備份與還原資料庫(MSSQL)

2021-10-02 08:49:38 字數 2745 閱讀 6563

引入第三方擴充套件的教程 :tp5框架下實現資料庫的備份功能-tp5er/tp5-databackup

一、備份資料庫的內容是生成的資料表的語句,語句內容主要包含是建立表,和插入表的內容。

簡要步驟如下:

1.獲取資料庫的所有的表

select name from 資料庫名.

.sysobjects where xtype=

'u' order by name

2.獲取所有表對應的所有欄位和相關屬性

select  c.table_schema ,

c.table_name ,

c.column_name ,

c.data_type ,

c.character_maximum_length ,

c.column_default ,

c.is_nullable ,

c.numeric_precision ,

c.numeric_scale

from [information_schema]

.[columns] c

where table_name =

'資料庫表名'

3.獲取所有表對應的表內容

$data = $this->pdo->

query

("select * from ");

$str =

"/* sql server separation */"

."\nset nocount on \n";if

($data)

$field =

rtrim

($field,

",")

; $str .

="insert into values ()"

."\n";}

$str.

="select 1"

;return $str;

}else

4.將以上的內容生成.sql檔案

$recognize = $this->options[

'database'];

$dir = $this->

trimpath

($path)

; $return_file_name = self:

:dir_sep . $recognize.$this->num;

$filename = $dir . $return_file_name;

$path = $this->

directory

($dir)

;//建立目錄

if($path !=

= true)

// 是否對檔案進行壓縮

$iscompress =

isset

($options[

'is_compress'])

? $options[

'is_compress']:

0;if($iscompress ==0)

else

$this->filename = $return_file_name;

}

二、還原資料庫是將備份生成的.sql檔案的內容一一生成資料庫所需的表,一一覆蓋掉當前的資料庫

簡要步驟如下:

1.獲取備份資料庫生成sql檔案的內容

'select top 1 * from sys.databases where name=\''

.$this->options[

'database'].

'\''

2.判斷當前資料庫是否有備份資料庫裡的資料表

$bool = $this->pdo->

query

('select top 1 * from sys.databases where name=\''

.$this->options[

'database'].

'\'');

if(!$bool)

3.刪除當前資料庫和執行sql檔案的內容,還原資料。

$content =

explode

('/* sql server separation */'

, $this->content)

;for

($i=

1;$i<

count

($content)

;$i++

)

忘說一點是備份資料庫之前,連線mssql資料庫也是關鍵。

$dbdb = new\pdo

("sqlsrv:server=這裡是host;database=資料庫名"

,$user,$pwd)

;//這是通過dsn的連線方法

最後看到成功了,挺感動,於是,寫在部落格裡記錄一下,也是我的第一篇部落格。如果大家有更加好的方法,可以寫下,大家相互交流交流!

ThinkPHP5使用快取

cache 使用復合快取型別 type complex 預設使用的快取 default 驅動方式 type file 在這設定換人的快取方式 快取儲存目錄 path cache path,檔案快取 file 驅動方式 type file 設定不同的快取儲存目錄 path runtime path f...

thinkphp5內建標籤

知道內建標籤怎麼用,查手冊的時候好查 卻功能的時候在裡面找著來用 1 內建標籤23 變數輸出使用普通標籤就足夠了,但是要完成其他的控制 迴圈和判斷功能,就需要借助模板引擎的標籤庫 4功能了,系統內建標籤庫的所有標籤無需引入標籤庫即可直接使用。5內建標籤包括 6標籤名作用包含屬性 7include 包...

ThinkPHP5使用QueryList4教程

幾乎每天都有人問我tp5中如何使用querylist4,所以寫了這篇教程。說實話我並不太想寫這篇教程,因為實在是沒有什麼技術含量。在thinkphp5 根目錄執行composer命令安裝querylist composer require jaeger querylist下面演示在index控制器中...