logo
关于我们

技术分享

技术分享 php 把数据库里的表逐个备份到由逗号分割的压缩文本文件

php 把数据库里的表逐个备份到由逗号分割的压缩文本文件

2021-06-03

使用zlib函数之前,运行phpinfo()来确定php支持这个库
格式:
$fp - gzopen('filename.gz', 'w5');
gzwrite($fp, 'data');
gzclose($fp);

再打开一个文件时,使用这些字母来设置模式。对于gzopen,我们还可以设置压缩级别(1到9),并且可以利用f、h和b来进一步调整模式。
r   只读r+  读和写
w  只写,从文件七点开始w+  读和写,从文件起点开始
a  只写,从文件末尾开始a+  读和写,从文件末尾开始
x  x+  
f  过滤的数据
h  只进行霍夫曼压缩
b 二进制模式

readgzfile() 读取压缩文件,对数据进行解压,返回得到的数据
gzfile()        读取压缩文件,对数据进行解压,以数组形式返回结果(每个元素对应于文件里的一行)


<?php
//phpinfo();
$db_name= 'test';
$dir = "backups/$db_name";
if(!is_dir($dir)){
	if(!@mkdir($dir)){
		die("<p>The backup directory--$dir--could not be created.</p>\n");
	}
}
$time = time();
$dbc = @mysqli_connect('localhost', 'root', '', $db_name) 
	   OR die("<p>The database--$db_name--could not be backed up.</p>\n");

$q = 'SHOW TABLES';
$r = mysqli_query($dbc, $q);

if(mysqli_num_rows($r) > 0){
	echo "<p>Backing up database '$db_name'.</p>\n";
	while (list($table) = mysqli_fetch_array($r, MYSQLI_NUM)){
		$q2 = "SELECT * FROM $table";
		$r2 = mysqli_query($dbc, $q2);
		if(mysqli_num_rows($r2) > 0){
			if($fp = gzopen("$dir/{$table}_{$time}.sql.gz", 'w9')){
				while ($row = mysqli_fetch_array($r2, MYSQLI_NUM)){
					foreach ($row as $value){
						gzwrite($fp, "'$value', ");
					}
					gzwrite($fp, "\n");
				}
				gzclose($fp);
				echo "<p>Table '$table' backed up.</p>\n";
			} else {
				echo "<p>the file--$dir/{$table}_{$time}.sql.gz--could not be opened for writing.</p>\n";
				break;
			}
		}
	}
}else {
	echo "<p>The submitted database--$db_name--contains no tables.</p>\n";
}
?>


萨发速度    

云祺备份软件,云祺容灾备份系统,虚拟机备份,数据库备份,文件备份,实时备份,勒索软件,美国,图书馆
  • 标签:
  • 容灾备份

您可能感兴趣的新闻 换一批

现在下载,可享30天免费试用

立即下载