(PHP实现Mysql远程同步代码.doc
文本预览下载声明
PHP实现Mysql远程同步代码
需求:由于公司的英文网站放置在美国,而这些网站的数据要与大陆的服务器数据同步。 同步时间在一天之内。拿到需求之后,发现这两个网站的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_terminate
显示全部