php 备份数据库
<?php header( "Content-type:text/html;charset=utf-8" ); //配置信息 $cfg_dbhost = 'localhost' ; $cfg_dbname = 'demos' ; $cfg_dbuser = 'root' ; $cfg_dbpwd = 'root' ; $cfg_db_language = 'utf8' ; $to_file_name = "ftdm.sql" ; // END 配置 //链接数据库 $link = mysql_connect( $cfg_dbhost , $cfg_dbuser , $cfg_dbpwd ); mysql_select_db( $cfg_dbname ); //选择编码 mysql_query( "set names " . $cfg_db_language ); //数据库中有哪些表 $tables = mysql_list_tables( $cfg_dbname ); //将这些表记录到一个数组 $tabList = array (); while ( $row = mysql_fetch_row( $tables )){ $tabList [] = $row [0]; } echo "运行中,请耐心等待...<br/>" ; $info = "-- ----------------------------\r\n" ; $info .= "-- 日期:" . date ( "Y-m-d H:i:s" ,time()). "\r\n" ; $info .= "-- 仅用于测试和学习,本程序不适合处理超大量数据\r\n" ; $info .= "-- ----------------------------\r\n\r\n" ; file_put_contents ( $to_file_name , $info ,FILE_APPEND); //将每个表的表结构导出到文件 foreach ( $tabList as $val ){ $sql = "show create table " . $val ; $res = mysql_query( $sql , $link ); $row = mysql_fetch_array( $res ); $info = "-- ----------------------------\r\n" ; $info .= "-- Table structure for `" . $val . "`\r\n" ; $info .= "-- ----------------------------\r\n" ; $info .= "DROP TABLE IF EXISTS `" . $val . "`;\r\n" ; $sqlStr = $info . $row [1]. ";\r\n\r\n" ; //追加到文件 file_put_contents ( $to_file_name , $sqlStr ,FILE_APPEND); //释放资源 mysql_free_result( $res ); } //将每个表的数据导出到文件 foreach ( $tabList as $val ){ $sql = "select * from " . $val ; $res = mysql_query( $sql , $link ); //如果表中没有数据,则继续下一张表 if (mysql_num_rows( $res )<1) continue ; // $info = "-- ----------------------------\r\n" ; $info .= "-- Records for `" . $val . "`\r\n" ; $info .= "-- ----------------------------\r\n" ; file_put_contents ( $to_file_name , $info ,FILE_APPEND); //读取数据 while ( $row = mysql_fetch_row( $res )){ $sqlStr = "INSERT INTO `" . $val . "` VALUES (" ; foreach ( $row as $zd ){ $sqlStr .= "'" . $zd . "', " ; } //去掉最后一个逗号和空格 $sqlStr = substr ( $sqlStr ,0, strlen ( $sqlStr )-2); $sqlStr .= ");\r\n" ; file_put_contents ( $to_file_name , $sqlStr ,FILE_APPEND); } //释放资源 mysql_free_result( $res ); file_put_contents ( $to_file_name , "\r\n" ,FILE_APPEND); } echo "OK!" ; ?>
|
php 备份数据库的更多相关文章
- php备份数据库
php备份数据库原理和方法 原理 查找所有表 查找所有字段,列出所有字段名 字段类型等信息 查找所有数据 读取后注意特殊符号转换addslashes() 生成sql 把数据库格式化生成对应sql 相关 ...
- oracle 备份数据库对象(存储过程PROCEDURE,FUNCTION,VIEW,TRIGGER...)
开发过程中,需要不停的备份数据库对象, 特别是存储过程, 每次手动备份不免很低能啊 历经几次修改终于, 完美了,O(∩_∩)O哈哈~ (当然,你也可以再改简便一点~~~) select db ...
- Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
Oracle中对数据对象和数据的管理,无疑都是使用PL/SQL Developer来进行管理,该工具也提供给我们很多方便.快捷的操作,使得我们不再为Oracle本身丑陋.难用的UI而抱怨.由于我们一般 ...
- Sql Server自动备份数据库,定期删除备份
//实现:每天自动备份数据库,定期删除备份 //步骤:[开始]--[所有程序]--[Microsoft SQL Server 2005]--[SQL Server Management Studio] ...
- 知方可补不足~SqlServer自动备份数据库及清理备份文件
回到目录 对于SQLSERVER这个关系型数据库来说,为了保持数据的安全,备份是必须的,当你的一个误操作导致数据丢失,这可能是灾难性的,是不被允许发生的,这时,我们必须要做好定期的备份工作,如我们可以 ...
- mysql load data infile的使用 和 SELECT into outfile备份数据库数据
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE t ...
- 出现“System.Data.SqlClient.SqlError: 尚未备份数据库的日志尾部”错误的解决方案
Sql Server2008数据库在还原时出现如下错误信息:System.Data.SqlClient.SqlError: 尚未备份数据库<数据库名称>的日志尾部.如果该日志包含您不希望丢 ...
- SQL Server 定时自动备份数据库
在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库,这篇文章介绍使用SQL Server 数据库代理中的作业定时自动备份数据库. 1.启动SQL Server代理服务,如下图: 绿色 ...
- SQL server2012怎么备份数据库(设置自动备份)
1.打开SQL server配置管理器,设置sql server服务里的SQL server代理服务为自动并启动 2.启动Master Data Services Configuration Mana ...
- 在linux和windows下自动备份数据库
摘要: 详细介绍在windows和linux下自动备份数据库的过程,希望可以让新手立即上手吧! 本文档内容共分为2大部分:linux和windows Linux和windows都分为:准备工作和操作阶 ...
随机推荐
- 导入spring源码到eclipse
1.1安装Gradle 可以从http://www.gradle.org/downloads页面下载Gradle.下载后将文件解压到指定目录,我放在D:\软件\gradle-3.3,然后设置环境变量. ...
- linux/windows平台生成随机数的不同方法
linux平台,使用rand.Seed() //rand_linux.go package main import ( "math/rand" "time" ) ...
- PHP文件上传预览
主页 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...
- 打开myeclipse2014的包资源管理器
网上查到的方法不太适用于myeclipse2014,我就自己试了一下下 结果是:windows->show view->general->project package 结果: 希望 ...
- JS replace可以接受回调函数
这是js最鲜为人知的秘密之一,v 1.3首次引入.大部分情况下repalce的使用情况如下: '10 12 13 40 50'.replace(/\d+/g,'*');//用 * 替换所有的数字 这是 ...
- Qt对ini文件的读写
研究了以下Qt下ini文件的读写,不废话,上干货. 写入ini文件 WriteIni.cpp void WriteIni::writeSettings() { QSettings settings(& ...
- JavaScript中时间戳和时间的相互转换
时间转换成时间戳: var time = new Date(); var timestamp=Date.parse(time) //毫秒数,得到秒除以1000: 时间戳转成时间: 1.转换成 20 ...
- ionic的弹出框$ionicPopover
在ionic.html中 在controller.js中
- mybatis xml的无效判空
<insert id="insert"> <if test="xxxMappingEntityList != null and xxxMappingEn ...
- Linux下各类压缩文件命令小结
.tar 解包:tar xvf FileName.tar 解包后原始文件仍存在 打包:tar cvf FileName.tar DirName1 Filename1 - 列出内容:tar tvf ...