jsp数据库备份导出代码

jsp数据库备份导出代码
 function export($tables,$sqlcompat,$sqlcharset,$sizelimit,$action,$fileid,$random,$tableid,$startfrom,$tabletype)

 {

  $dumpcharset = $sqlcharset ? $sqlcharset : str_replace('-', '', CHARSET);

  $fileid = isset($fileid) ? $fileid : 1;

  if($fileid==1 && $tables)

  {

   if(!isset($tables) || !is_array($tables)) showmessage('select_bak_table');

   $random = mt_rand(1000, 9999);

   cache_write('bakup_tables.php', $tables);

  }

  else

  {

   if(!$tables = cache_read('bakup_tables.php')) showmessage('select_bak_table');

  }

  if($this->db->version() > '4.1')

  {

   if($sqlcharset)

   {

    $this->db->query("SET NAMES '".$sqlcharset."';nn");

   }

   if($sqlcompat == 'MYSQL40')

   {

    $this->db->query("SET SQL_MODE='MYSQL40'");

   }

   elseif($sqlcompat == 'MYSQL41')

   {

    $this->db->query("SET SQL_MODE=''");

   }

  }

  $tabledump = '';

  $tableid = isset($tableid) ? $tableid - 1 : 0;

  $startfrom = isset($startfrom) ? intval($startfrom) : 0;

  for($i = $tableid; $i < count($tables) && strlen($tabledump) < $sizelimit * 1000; $i++)

  {

   global $startrow;

   $offset = 100;

   if(!$startfrom)

   {

    $tabledump .= "DROP TABLE IF EXISTS `$tables[$i]`;n";

    $createtable = $this->db->query("SHOW CREATE TABLE `$tables[$i]` ");

    $create = $this->db->fetch_row($createtable);

    $tabledump .= $create[1].";nn";

    if($sqlcompat == 'MYSQL41' && $this->db->version() < '4.1')

    {

     $tabledump = preg_replace("/TYPE=([a-zA-Z0-9]+)/", "ENGINE=\1 DEFAULT CHARSET=".$dumpcharset, $tabledump);

    }

    if($this->db->version() > '4.1' && $sqlcharset)

    {

     $tabledump = preg_replace("/(DEFAULT)*s*CHARSET=[a-zA-Z0-9]+/", "DEFAULT CHARSET=".$sqlcharset, $tabledump);

    }

   }

 

   $numrows = $offset;

   while(strlen($tabledump) < $sizelimit * 1000 && $numrows == $offset)

   {

    $rows = $this->db->query("SELECT * FROM `$tables[$i]` LIMIT $startfrom, $offset");

    $numfields = $this->db->num_fields($rows);

    $numrows = $this->db->num_rows($rows);

    while ($row = $this->db->fetch_row($rows))

    {

     $comma = "";

     $tabledump .= "INSERT INTO `$tables[$i]` VALUES(";

     for($j = 0; $j < $numfields; $j++)

     {

      $tabledump .= $comma."'".mysql_escape_string($row[$j])."'";

      $comma = ",";

     }

     $tabledump .= ");n";

    }

    $this->db->free_result($rows);

    $startfrom += $offset;

   }

   $tabledump .= "n";

   $startrow = $startfrom;

   $startfrom = 0;

  }

 

  if(trim($tabledump))

  {

   $tabledump = "#bakfilen# version:COUVOLn# time:".date('Y-m-d H:i:s')."n# type:hl_databasen# email:263645928@qq.comn# sourc:http://www.u731.com/?1n# --------------------------------------------------------nnn".$tabledump;

   $tableid = $i;

   $filename = 'hl_'.date('Ymd').'_'.$random.'_'.$fileid.'.sql';

   $fileid++;

   $bakfile = PHPCMS_ROOT.'/data/bakup/'.$filename;

   if(!is_writable(PHPCMS_ROOT.'/data/bakup/')) showmessage('数据无法备份到服务器!请检查 '.$bakfile.' 目录是否可写', $forward);

   file_put_contents($bakfile, $tabledump);

   @chmod($bakfile, 0777);

   showmessage('bak_file'." $filename ".'数据库备份完毕!', '?mod='.$this->mod.'&file='.$this->file.'&action='.$action.'&sizelimit='.$sizelimit.'&sqlcompat='.$sqlcompat.'&sqlcharset='.$sqlcharset.'&tableid='.$tableid.'&fileid='.$fileid.'&startfrom='.$startrow.'&random='.$random.'&dosubmit=1&tabletype='.$tabletype);

  }

  else

  {

     cache_delete('bakup_tables.php');

     showmessage('database_bak_success','?file=database&action=export');

  }

 }

时间: 2024-09-16 07:58:20

jsp数据库备份导出代码的相关文章

jsp数据备份还原代码

jsp数据备份还原代码  function import($filename)  {   global $fileid;   if($filename && fileext($filename)=='sql')   {    $filepath = PHPCMS_ROOT.'/data/bakup/'.$filename;    if(!file_exists($filepath)) showmessage('对不起,"'. $filepath .'"文件不存在');

利用php把mysql数据库备份导出成sql示例

用php代码实现数据库备份可以使网站的管理变得非常便捷,我们可以直接进后台操作就能完成数据库的备份. 关键技术: 1. 首先要得到该数据库中有哪些表,所用函数 mysql_list_tables(),然后可以将获取的所有表名存到一个数组. 2. show create table 表名 可以获取表结构. 3. select * from 表名 取出所有记录,用循环拼接成 insert into... 语句. 功能截图:   导出成的sql语句效果   具体代码:  代码如下 复制代码 <?php

Ubuntu Server下MySql数据库备份脚本代码

说明: 我这里要把MySql数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存为mysqldata_bak_2012_04_11.tar.gz的压缩文件格式(2012_04_11是指备份执行时当天的日期), 最后只保留最近7天的备份. 实现步骤: 1.创建保存备份文件的目录:/home/mysql_datacd /home #进入目录 mkdir mysql_data #创建目录2.创建备份脚本文件:/home/mysql_data

Sqlserver2000 数据库备份实例代码_MsSql

复制代码 代码如下: 数据库备份实例/** **数据库备份实例 **朱二 2004年5月 **备份策略: **数据库名:test **备份文件的路径e:\backup **每个星期天凌晨1点做一次完全备份,为保险起见,备份到两个同样的完全备份文件test_full_A.bak和test_full_B.bak **每天1点(除了星期天)做一次差异备份,分别备份到两个文件test_df_A.bak和test_df_B.bak(采用附加到原备份的方式) **每一个小时做一次事务日志备份,分别备份到两个

Ubuntu Server下MySql数据库备份脚本代码_Mysql

说明: 我这里要把MySql数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存为mysqldata_bak_2012_04_11.tar.gz的压缩文件格式(2012_04_11是指备份执行时当天的日期), 最后只保留最近7天的备份. 实现步骤: 1.创建保存备份文件的目录:/home/mysql_datacd /home #进入目录mkdir mysql_data #创建目录2.创建备份脚本文件:/home/mysql_data/

linux mysql数据库备份脚本代码

可以将这个脚本放进crontab,他的配制文件在 /etc/crontab中每天凌晨执行一次,自动备份 这个脚本每天最多只执行一次,而且只保留最近五天的备份在服务器上.  代码如下 复制代码 #!/bin/bash #This is a ShellScript For Auto DB Backup #Powered by aspbiz #2004-09 #Setting #设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置, #以及备份方式 #默认情况下备份方式是tar,还可以是

Sqlserver2000 数据库备份实例代码

复制代码 代码如下: 数据库备份实例/** **数据库备份实例 **朱二 2004年5月 **备份策略: **数据库名:test **备份文件的路径e:\backup **每个星期天凌晨1点做一次完全备份,为保险起见,备份到两个同样的完全备份文件test_full_A.bak和test_full_B.bak **每天1点(除了星期天)做一次差异备份,分别备份到两个文件test_df_A.bak和test_df_B.bak(采用附加到原备份的方式) **每一个小时做一次事务日志备份,分别备份到两个

linux php mysql数据库备份实现代码_php技巧

但是出现了问题: 第一.运行php的是apche的用户,比如是nobody,那么它一般是没有权限访问/usr/local/mysql/data目录的 第二.就算能够访问,那么你如何能够把/usr/local/mysql/data目录下的文件拷贝出来呢?因为mysql在运行的时候是不运行访问的,那么nobody用户有权限停止mysql的服务,不可能! 越想越不对劲,没有办法,看能不能从php操作数据库入手,于是就去看了下phpMyadmin和Discuz!的代码,呵呵,于是偷抄了Discuz!的代

mysql异地数据库备份实例代码

windows的任务计划定时执行该文件. 文件内容如下:  代码如下 复制代码 cd F:/MySQLBackup f: mysqldump  -h ip  -uusername  -ppassword dbname>F:/MySQLBackup/PersonBackupMonday.sql username:数据库用户 password:数据库密码 dbname:数据库名称 恢复数据:可以把数据拷贝到数据库的服务器中  代码如下 复制代码 C:/Documents and Settings/A