CI数据库备份与还原入门小例子

最近看到有几个问CI数据库备份与还原的问题,以前也没做过还原的问题,就此探讨一下:我的思路:
使用CI的数据库工具类进行数据库备份,写入一个SQL文件中,恢复时,用CI的文件辅助函数读取文件内容进行query操作。
代码:
PHP 复制代码
function backup ( ) {                 function backup ( ) {
 
$this -> load -> dbutil ( ) ;
 
$this -> load -> helper ( 'file' ) ;
 
$prefs  =  array (
                 'tables'       =>  array ( ) ,   // 包含了需备份的表名的数组.
                 'ignore'       =>  array ( ) ,            // 备份时需要被忽略的表
                 'format'       =>  'txt' ,              // gzip, zip, txt
                 'filename'     =>  'mybackup.sql' ,     // 文件名 - 如果选择了ZIP压缩,此项就是必需的
                 'add_drop'     =>  TRUE ,               // 是否要在备份文件中添加 DROP TABLE 语句
                 'add_insert'   =>  TRUE ,               // 是否要在备份文件中添加 INSERT 语句
                 'newline'      =>  "\\n"                // 备份文件中的换行符
               ) ;
 
$backup  =  $this -> dbutil -> backup ( $prefs ) ;
 
write_file ( './database.sql' ,  $backup ) ; 
 
}
 
 
 
function restore ( ) {
 
$this -> load -> helper ( 'file' ) ;
 
//$content = read_file('./database.sql');
 
//$content = preg_replace("/#(.*)\\s#(.*)TABLE(.*)(.*)\\s#/i","",$content);//去掉注释部分
 
$conn = mysql_connect ( "localhost" , "root" , "" ) ; //指定数据库连接参数
 
mysql_select_db ( "test" ) ;
 
$file  = BASEPATH  .  "database.sql" ;
 
mysql_query ( "source '" . $file . "';" ) ;
 
mysql_close ( $conn ) ;
 
/*$sqls = explode(";\\r",$content);
 
foreach($sqls as $sql){
 
if(str_replace(" ","",$sql)){
 
$this->db->query($sql);
 
}
 
}*/

 
}
复制代码

恢复的函数中注释的部分,是想尝试使用CI的数据库进行导入的,结果发现直接query文件中的内容不行
然后去掉CI备份文件中的注释部分,发现依然不可以,接着进行打散SQL语句,然后一条一条query,是可以的。
最后用原始的函数是可以完美进行的,而且不用去掉注释部分。

大家有啥好的方法欢迎发出来分享啊
:)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值