首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>PHP专区>编程技巧>PHP实现Mysql远程同步代码
PHP实现Mysql远程同步代码
来源: 发布时间:2007-11-24 发布人: 浏览: 人次   字体: [ ]  

需求:由于公司的英文网站放置在美国,而这些网站的数据要与大陆的服务器数据同步。 同步时间在一天之内。
拿到需求之后,发现这两个网站的MYSQL数据库都不能远程访问(安全第一吧)。于是想起了 平时使用的CSV文件批量录入数据。于是尝试使用CSV导入导出。

导入到处框架如下:

 

1首先将数据导出成CSV的格式。

建立一文件,放置在中国服务器上:csv.php.其实就是一个导出函数,通过数据库,表名和SQL语句来获得数据。

 

<?php
/**
 * 输出一个数据库中的表到一个CSV文件中
 *
 * @param   string      Mysql数据库的主机
 * @param   string      数据库名称
 * @param   string      数据库中的表名
 * @param   string      数据库的连接用户名
 * @param   string      数据库的连接密码
 * @param   string      数据库的表名
 * @param   string      数据库的 
 * @param   string      错误页面
 * @param   string      SQL语句
 *
 * @return  text        返回CSV格式的内容
 *
 * @access  public
 
*/
function PMA_exportData($host,$db,$user,$pass,$filename,$table, $crlf, $error_url, $sql_query) {
    
$what="csv";
     
$csv_terminated=" ";
     
$csv_separator=",";
     
$csv_enclosed=" ";
    
$csv_escaped="&nbsp;";
    
    
    
mysql_connect($host, $user,$pass) or   die("不能连接数据库,错误代码如下:" . mysql_error());
    
mysql_select_db($db);
    
 
    
$result      = mysql_query($sql_query);
    
$fields_cnt  = mysql_num_fields($result);
    
$cc="";
 
  
//$fp = fopen($filename, 'w');
    // 格式化数据

    while ($row = mysql_fetch_row($result)) {
        
$schema_insert = '';
        
for ($j = 0$j < $fields_cnt$j++) {
            
if (!isset($row[$j]) || is_null($row[$j])) {
                
$schema_insert .="NULL";  //用什么来替换空值
            } elseif ($row[$j== '0' || $row[$j!= '') {
                
// loic1 :用引号包含字段值
            
                
if ($csv_enclosed == '') {
                    
$schema_insert .= $row[$j];
                } 
else {
                    
$schema_insert .= $csv_enclosed
                                   
. str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $row[$j])
                                   
. $csv_enclosed;
                }
            } 
else {
                
$schema_insert .= '';
            }
            
if ($j < $fields_cnt-1) {
                
$schema_insert .= $csv_separator;
            }
        } 
// end for

 //  fwrite($fp,$schema_insert . $csv_terminated);

   $cc.=$schema_insert . $csv_terminated;
    } 
// end while
    mysql_free_result($result);
    
    
 
// fclose($fp);
   return $cc;


?>

2.将CSV格式的内容导入到表中

 在美国服务器上建立个导入的文件,放置:import.php ,代码如下:

 

<?php

/**
 * 从一个上传的文件中将数据导入到一个表中
 *
 * @param   string      Mysql数据库的主机
 * @param   string      数据库名称
 * @param   string      数据库中的表名
 * @param   string      数据库的连接用户名
 * @param   string      数据库的连接密码
 * @param   string      数据库的表名
 *
 * @return  bool        是否执行成功
 *
 * @access  public
 
*/
 
function uploadFileOfCsv($host,$db,$user,$pass,$table,$content){  

    
mysql_connect($host, $user,$pass) or   die("不能连接数据库,错误代码如下:" . mysql_error());
    
mysql_select_db($db);
    
 
    
$result      = mysql_query("select * from $table");
    
$fields_cnt  = mysql_num_fields($result);


   
$test2=array(array());
     
$rownum=0
    
log("提取的数据如下:<br>".$content);
     
$fd1 = fopen ("C:test.csv",'a');
     
fwrite($fd1,$content);
     
fclose($fd1);
    
    
$fp = fopen("C:test.csv", "r");

        
while ($buffer = fgets($fp,4096))
        {
            
$i++
            
            
$tmp_arr = explode(",",$buffer);
            
            
if(trim($tmp_arr[0]) == ""){
                
echo "<script language='javascript'>";
                
echo "alert('第".$i."行的ID空,请检查!');";
                
echo "location.href=document.referrer;";
                
echo "</script>";
                
exit;
            } 
            
        
$query = "INSERT INTO  $db.$table";
                         
$query .=" values ( ";
                             
for($q=0;$q<$fields_cnt;$q++){ 
                              
if($q==$fields_cnt-1){ 
                                    
$tmp=$tmp_arr[$q];
                                    
$query.="'$tmp');";
                              }
else{
                                  
$tmp=$tmp_arr[$q];
                                  
$query.="'$tmp',";
                             
                                 
                              }
                            }
//end for($q=0;
                  
                     
                  log2(
$query);
               
mysql_query($query); 
 
 
        }
   
fclose($fp);
   
   
   
return "OK";
   
unlink("C:test.csv");
 
                
}
    
 
 
     
function log2($event = null){
                
//global $db;
              // global $login;

                
                
if(LOG_ENABLED){
                         
$now = date("Y-M-d H:i:s");
                
                       
$fd = fopen ("C:log.html",'a');
                        
$log = $now." ".$_SERVER["REMOTE_ADDR"." - $event <br>";
                 
fwrite($fd,$log);
                 
fclose($fd);
                }
        }
   
   



?>


共2页: 上一页 1 [2] 下一页
相 关 文 章   发布商链接
·PHP程序开发利用PDFLib扩展模块动态...
·PHP利用Jmai组件实现邮件的发送代码
·实例讲解php实现中文水印的代码
·PHP是如何设置COOKIE的保留时间为浏...
·PHP读取站点的链接函数代码实例
·实例讲解PHP原生代码生成RSS文档
·利用PHP制作简单的内容采集器
·用PHP来构建自定义搜索引擎
·用PHP程序直接调用文本文件内容实例
·如何用PHP对文本文件加密并限制特定...
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·实例讲解PHP原生代码生成RSS...
·PHP读取站点的链接函数代码实
·PHP是如何设置COOKIE的保留时
·实例讲解php实现中文水印的代
·PHP利用Jmai组件实现邮件的发
·PHP程序开发利用PDFLib扩展模
·如何用PHP对文本文件加密并限
·用PHP程序直接调用文本文件内
·用PHP来构建自定义搜索引擎
·利用PHP制作简单的内容采集器
热 门 文 章
·PHP程序开发利用PDFLib扩展模...
·用PHP来构建自定义搜索引擎
·如何用PHP对文本文件加密并限...
·PHP利用Jmai组件实现邮件的发...
·利用PHP制作简单的内容采集器
·实例讲解php实现中文水印的代...
·用PHP程序直接调用文本文件内...
·实例讲解PHP原生代码生成RSS...
·PHP读取站点的链接函数代码实...
·PHP是如何设置COOKIE的保留时...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .