php操作mysql两个数据库中表的数据同步

  • 题记: 我们开发当中经常会遇到,数据同步。比如将teaching数据库中area表的数据同步到study数据库中zone表中。

备注:这两个数据库不同,数据表名字也不同,但数据表的结构相同。不同表结构导入原理是一致的,在【另注】有介绍。如下图所示:

teaching数据库area表结构:

study数据库zone表结构:

下面演示:给teaching数据库area表添加几条数据,然后用php操作,导入到study数据库中的zone表中。添加的数据如图所示:

准备完成后开始php编码:

  1. //建立数据库连接,localhost为主机名,root即mysql用户登录名,我这里的mysql登录密码为空。

     $conn = mysql_connect("localhost","root","");

  2. //由于是将teaching数据库中area表的数据同步到study数据库中zone表,所以这里选择连接的数据库为:study

     mysql_select_db("study");

  3. 清空study数据库zone表的内容,以便和导入的teaching数据库中area的数据一致。

     $delSql="delete from `zone`";

     $rel_del= @mysql_query($delSql);

  4. //导入操作。

    $sql="insert into study.zone(`id`, `areaID`, `area`, `father`) select  `id`, `areaID`, `area`, `father` from teaching.area "; $result= mysql_query($sql);if($result){echo "<font color='green' >恭喜您,数据同步成功!</font>";

               }else{         echo "<font color='red' >数据同步出错,请检查!</font>";

         }

代码编写完毕后保存,我们这里就随便起个名字,就命名为31.php。如下图所示:

然后运行31.php测试,提示“恭喜您,数据同步成功!”;如图所示:

 

 

 然后我们对比发现连个数据库中数据表的数据完全一致。数据同步成功:效果如下图所示:

  • 另注:不同数据库,不同数据表结构之间的数据同步原理和这个相同,保持插入时字段位置对应好即可。

下面将这次演示的代码及数据库脚本全粘贴出来方便大家测试和学习。

<-------------------------------------------------------SQL脚本开始---------------------------------------------------->

create database teaching;

CREATE TABLE  `area` ( 

 `id` int(11) NOT NULL AUTO_INCREMENT,

  `areaID` varchar(50) CHARACTER SET gb2312 DEFAULT NULL, 

 `area` varchar(60) CHARACTER SET gb2312 DEFAULT NULL,

  `father` varchar(6) CHARACTER SET gb2312 DEFAULT NULL, 

 PRIMARY KEY (`id`)) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3187 ;

 

INSERT INTO `area` (`id`, `areaID`, `area`, `father`) VALUES

(2759, '610101', '市辖区', '610100'),(2760, '610102', '新城区', '610100'),

(2761, '610103', '碑林区', '610100'),(2762, '610104', '莲湖区', '610100'),

(2763, '610111', '灞桥区', '610100'),(2764, '610112', '未央区', '610100'),

(2765, '610113', '雁塔区', '610100'),(2766, '610114', '阎良区', '610100'),

(2767, '610115', '临潼区', '610100'),(2768, '610116', '长安区', '610100'),

(2769, '610122', '蓝田县', '610100');

 

create database study;

CREATE TABLE `zone` ( 

 `id` int(11) NOT NULL AUTO_INCREMENT, 

`areaID` varchar(50) CHARACTER SET gb2312 DEFAULT NULL,

  `area` varchar(60) CHARACTER SET gb2312 DEFAULT NULL, 

`father` varchar(6) CHARACTER SET gb2312 DEFAULT NULL,

  PRIMARY KEY (`id`)) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3187 ;

 

<-------------------------------------------------------SQL脚本结束---------------------------------------------------->

 

<------------------------------------------------------php测试代码开始------------------------------------------------>

<?php

 $conn = mysql_connect("localhost","root",""); 

mysql_select_db("study"); 

$delSql="delete from `zone`"; 

$rel_del= @mysql_query($delSql); 

$sql="insert into study.zone(`id`, `areaID`, `area`, `father`)     select  `id`, `areaID`, `area`, `father` from teaching.area ";

 $result= mysql_query($sql);

if($result){

echo "<font color='green' >恭喜您,数据同步成功!</font>";

 }else{ 

echo "<font color='red' >数据同步出错,请检查!</font>";

}

?>

<------------------------------------------------------php测试代码结束------------------------------------------------>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过以下步骤同步两个数据库中不同数据: 1. 连接两个数据库,获取数据源和目标数据库的连接; 2. 使用查询语句从源数据库中获取需要同步数据; 3. 将获取的数据插入到目标数据库的相应中; 4. 关闭数据库连接。 下面是一个简单的示例代码,用于将一个数据库中的数据同步到另一个数据库中: ```java import java.sql.*; public class SyncData { public static void main(String[] args) { try { // 数据源连接 Connection sourceConn = DriverManager.getConnection( "jdbc:mysql://localhost/source_db?useSSL=false", "username", "password" ); // 目标数据库连接 Connection targetConn = DriverManager.getConnection( "jdbc:mysql://localhost/target_db?useSSL=false", "username", "password" ); // 查询语句 String query = "SELECT * FROM source_table"; // 执行查询 Statement stmt = sourceConn.createStatement(); ResultSet rs = stmt.executeQuery(query); // 将数据插入目标数据库 while (rs.next()) { PreparedStatement pstmt = targetConn.prepareStatement( "INSERT INTO target_table (column1, column2, ...) VALUES (?, ?, ...)" ); // 设置插入参数 pstmt.setString(1, rs.getString("column1")); pstmt.setInt(2, rs.getInt("column2")); // ... pstmt.executeUpdate(); } // 关闭连接 rs.close(); stmt.close(); sourceConn.close(); targetConn.close(); } catch (SQLException ex) { ex.printStackTrace(); } } } ``` 在实际应用中,还需要考虑数据类型转换、异常处理、数据过滤等问题。同时,为了提高数据同步的效率,可以使用批处理或多线程等技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值