喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
     
标题: 请问有没有导入到导出数据库的类?我想做备份和恢复网站的数据用  
 
shishirui (shishirui)
中级会员
Rank: 3Rank: 3
中级会员



UID 24551
精华 0
积分 325
帖子 325
金钱 325 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2003-11-12
状态 离线
请问有没有导入到导出数据库的类?我想做备份和恢复网站的数据用

谢谢各位!!!
2005-1-11 06:34 PM#1
查看资料  发短消息  顶部
 
ALPS (km3945)
版主
Rank: 7Rank: 7Rank: 7
版主


UID 46538
精华 0
积分 1312
帖子 1280
金钱 1312 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-11-8
状态 离线
[推荐阅读] Smarty中不支持include的get调用吗?




学会用下半身来思考!
2005-1-11 06:50 PM#2
查看资料  Blog  发短消息  QQ  顶部
 
M.A.I.T小麦 (M.A.I.T小麦)
中级会员
Rank: 3Rank: 3
中级会员



UID 31524
精华 0
积分 203
帖子 219
金钱 203 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2004-9-28
状态 离线
[推荐阅读] 猫和网速的一些问题


<?php
##
        # 备份数据库
        #
        
function backup($dir='')
        {
            if (empty(
$dir)) $dir DIR_FS_BACKUP;

            
set_time_limit);

            
$backup_file $this->database.'__'.date'YmdHi' ).'.sql';

            
$fp = @fopen($dir $backup_file'w');
            
$schema  "nn#    ===============================================================n";
            
$schema .= "n#    数据库名: ".$this->database." n";
            
$schema .= "n#    备份保存文件名:".$backup_file." n" ;
            
$schema .= "n#    文件    ===============================================================nnn";
            
fputs$fp$schema );

            
$tables_query $this->query"show tables from `" $this->database "`" );
            while ( 
$tables $this->fetch_array$tables_query ) )
            {
                list( , 
$table ) = each$tables );

                
$schema 'drop table if exists `' $table '`;' "n" 'create table `' $table '` (' "n";

                
$table_list = array();
                
$fields_query $this->query"show fields from `" $table ."`");
                while ( 
$fields $this->fetch_array$fields_query ) ) 
                {
                    
$table_list[] = $fields['Field'];

                    
$schema .= '  ' $fields['Field'] . ' ' $fields['Type'];

                    if ( 
strlen$fields['Default'] ) > $schema .= ' default '' . $fields['Default'] . ''';

                    if ( 
$fields['Null'] != 'YES' $schema .= ' not null';

                    if ( isset( 
$fields['Extra'] ) ) $schema .= ' ' $fields['Extra'];

                    
$schema .= ',' "n";
                } 

                
$schema ereg_replace",n$"''$schema );
                
// add the keys
                
$index = array();
                
$keys_query $this->query"show keys from `" $table ."`");
                while ( 
$keys $this->fetch_array$keys_query ) )
                {
                    
$kname $keys['Key_name'];

                    if ( !isset( 
$index[$kname] ) ) {
                        
$index[$kname] = array( 'unique' => !$keys['Non_unique'],
                            
'columns' => array() );
                    } 

                    
$index[$kname]['columns'][] = $keys['Column_name'];
                } 

                while ( list( 
$kname$info ) = each$index ) ) 
                {
                    
$schema .= ',' "n";

                    
$columns implode'`,`',  $info['columns']);

                    if ( 
$kname == 'PRIMARY' ) {
                        
$schema .= '  PRIMARY KEY (`' $columns '`)';
                    } elseif ( 
$info['unique'] ) {
                        
$schema .= '  UNIQUE ' $kname ' (`' $columns '`)';
                    } else {
                        
$schema .= '  KEY ' $kname ' (`' $columns '`)';
                    } 
                } 

                
$schema .= "n" ');' "nn";
                
fputs$fp$schema );
                
// dump the data
                
$rows_query $this->query"select `" implode'`,`'$table_list ) . "` from " $table );
                while ( 
$rows $this->fetch_array$rows_query ) )
                {
                    
$schema 'insert into `' $table '` (`' implode'`, `'$table_list ) . '`) values (';

                    
reset$table_list );
                    while ( list( , 
$i ) = each$table_list ) ) 
                    {
                        if ( !isset( 
$rows[$i] ) ) {
                            
$schema .= 'NULL, ';
                        } elseif ( !empty( 
$rows[$i] ) ) {
                            
$row addslashes$rows[$i] );
                            
$row ereg_replace"n#""n" '#'$row );

                            
$schema .= ''' . $row . '', ';
                        } else {
                            
$schema .= ''', ';
                        } 
                    } 

                    
$schema ereg_replace', $'''$schema ) . ');' "n";
                    
fputs$fp$schema );
                } 
            } 

            
fclose$fp );

            include_once(
dirname(__FILE__)."/Files.inc.php"); # 加密类
            
$objFiles = new Files();
            
$file_str $objFiles->read($dir.$backup_file);

            include_once(
dirname(__FILE__)."/EnDcCrypt.inc.php"); # 加密类
            
$objEnDcCrypt = new EnDcCrypt();
            
$file_str $objEnDcCrypt->EnCrypt($file_str);

            
$fp = @fopen($dir.$backup_file'w');
            
fputs$fp$file_str );
            
fclose$fp );

            return 
$backup_file;
        } 

        
##
        # 恢复备份的数据库
        #
        
function revert($backup_file='')
        {
            if (!
file_exists($backup_file))
            {
                return 
$this->err->catchErr$this->getSysMsg('数据文件不存在',$backup_file));
            }

            
set_time_limit);

            include_once(
dirname(__FILE__)."/Files.inc.php"); 
            
$objFiles = new Files();
            
$file_str $objFiles->read($backup_file);

            include_once(
dirname(__FILE__)."/EnDcCrypt.inc.php"); # 加密类
            
$objEnDcCrypt = new EnDcCrypt();
            
$file_str $objEnDcCrypt->DcCrypt($file_str);

            
$array     = array();
            
$array     explode(";"$file_str);

            foreach(
$array as $k=>$v)
            {
                if (
strlen($v)>6)    
                {
                    if(!
mysql_query($v))
                    {
                        return 
$this->err->catchErr$this->getSysMsg('第'.$k.'条恢复有错误,请手工恢复',$v));
                    }
                }
            }
            return 
true;
        }
?>
2005-1-11 10:41 PM#3
查看资料  发短消息  QQ  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.036979 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP