All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
C#,中的常用正则表达式总结_[Asp.Net教程]
ASP.NET2.0新特性概述_[Asp.Net教程]
ASP.NET从零起步设计网站全过程(8)_[Asp.Net教程]
元素水平居中方案全集_[Html教程]
保护代码安全,PHP如何进行注入_[PHP教程]
Discuz论坛2.5,升级到PHP,MySQL新版遇到的问题_php资料_编程技术
如何在十天内学会php之第五天_[PHP教程]
SQL,安装_[SQL,Server教程]
ASP.NET技巧:数据导出到Excel最为简易的方法_[Asp.Net教程]
PHP程序加速探索之代码优化_[PHP教程]
Reading number is top 10 pictures
梦幻的风景
The real super beauty2
美丽的桂林风光1
Ashlynn Brooke a group sexy photo1
美女
抗日又出雷剧情
China's programmers are live what kind, had a look at will know that
A letter to parents choose world of warcraft seven big reason
Exquisite decoration is not paying too much4
2012 national geographic daily picture7
Download software ranking
The Bermuda triangle2
Tram sex maniac 2 (H) rar bag17
Boxer's Top ten classic battle7
Unix video tutorial5
asp.netWeb服务器高级编程
Ashlynn Video3
打鸟视频
Twenty piece of palm leaf
Tram sex maniac 2 (H) rar bag12
Unix video tutorial12
归海一刀 published in(发表于) 2014/2/17 7:33:53 Edit(编辑)
PHP实现同步远程Mysql_[PHP教程]

PHP实现同步远程Mysql_[PHP教程]

PHP实现同步远程Mysql_[PHP教程]























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




导入到处框架如下:




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




/**
* 输出一个数据库中的表到一个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=" ";


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 ,代码如下:







/**
* 从一个上传的文件中将数据导入到一个表中
*
* @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("提取的数据如下:
".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 "";
exit;
}

query = "INSERT INTO db.table";
query .=" values ( ";
for(q=0;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
";
fwrite(fd,log);
fclose(fd);
}
}







?>
3调用函数执行导出




在中国服务器上再建立一个 文件:test_export.php,调用前面的csv.php的函数,然后将数据转成CSV,然后临时存到一个表单的textera中,注意表单提交的位置:




require_once("csv.php");
host="localhost";
db="project";
user="root";
pass="";




//导出tb_contact表的数据为csv文件
filename = 'file4.csv';
cc=PMA_exportData( host,db,user,pass, filename,"tb_project_dvp", "", "test.php", "select * from tb_project_dvp") ;





handle = fopen(filename, "rb");
contents = fread(handle, filesize (filename));
fclose(handle);

?>















再在美国服务器上防置如下文件用于接受上传上来的数据,文件名为 test_import.php:




require_once("csv.php");
require_once("import.php");


host="localhost";
db="wintopweb";
user="root";
pass="";

if(_POST['action']=="1"){

content=_POST['textarea'];
echo uploadFileOfCsv(host,db,user,pass,"tb_project_dvp",content);

}





?>




最后 利用Windows-xp/nt/03 控制面版中自带 任务计划,调度执行中国服务器test_export.php文件即可




来源:CSDN









































添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.