java 同步数据,同步数据到另一个库中。

前提:同一个服务器中,同种数据库

实际项目开发中所应用到的场景:每次同步数据时,先删除另一个库中表的数据,再同步。

前提:两个库中的表结构一致;本次所用的是mysql数据库;持久化框架为 mybatis;项目框架spring boot

	/**
	 * 同步数据到另一个库
	 * @author 
	 * @date 2018-9-5
	 * @param dataBaseNameNew 另一个库名
	 * @param databaseTableNameNew 另一个库的表名字
	 * @param dataBaseNameOld 当前库名
	 * @param databaseTableNameOld 当前库表名
	 */
	@Select(" truncate table ${dataBaseNameNew}.${databaseTableNameNew};"
			+ "insert into ${dataBaseNameNew}.${databaseTableNameNew} "
			+ "select * from ${dataBaseNameOld}.${databaseTableNameOld}")
	void synchData(@Param("dataBaseNameNew")String dataBaseNameNew,
			@Param("databaseTableNameNew")String databaseTableNameNew,
			@Param("dataBaseNameOld")String dataBaseNameOld,
			@Param("databaseTableNameOld")String databaseTableNameOld);



truncate table ${dataBaseNameNew}.${databaseTableNameNew};  删除表中的数据

结语:本人所有文章都立志写的简单易懂,戳中问题点。 当然了,简单的同时可能忽略了很多细节与详细,如有不足的地方,还请谅解并指出。  如对文章或实现技术上有问题,可联系我:qq: 1226500260     邮箱:654868284@qq.com

下面是一个简单的 Java demo,演示如何跨服务器将一个库的表数据同步到另一个库: ```java import java.sql.*; public class DataSyncDemo { public static void main(String[] args) { // 源库连接信息 String srcUrl = "jdbc:mysql://localhost:3306/src_db"; String srcUser = "root"; String srcPassword = "123456"; // 目标库连接信息 String destUrl = "jdbc:mysql://192.168.1.100:3306/dest_db"; String destUser = "admin"; String destPassword = "password"; // 表名和字段名 String tableName = "users"; String[] columnNames = { "id", "name", "age" }; Connection srcConn = null; Connection destConn = null; Statement srcStmt = null; PreparedStatement destStmt = null; ResultSet rs = null; try { // 连接源库 srcConn = DriverManager.getConnection(srcUrl, srcUser, srcPassword); srcStmt = srcConn.createStatement(); String sql = "SELECT * FROM " + tableName; rs = srcStmt.executeQuery(sql); // 连接目标库 destConn = DriverManager.getConnection(destUrl, destUser, destPassword); destStmt = destConn.prepareStatement( "INSERT INTO " + tableName + " (" + String.join(",", columnNames) + ") VALUES (?, ?, ?)" ); // 遍历源库结果集,插入到目标库 while (rs.next()) { for (int i = 0; i < columnNames.length; i++) { destStmt.setObject(i + 1, rs.getObject(columnNames[i])); } destStmt.addBatch(); } destStmt.executeBatch(); System.out.println("Data sync succeeded."); } catch (SQLException e) { e.printStackTrace(); } finally { try { rs.close(); srcStmt.close(); destStmt.close(); srcConn.close(); destConn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 这个 demo 连接了两个 MySQL 数据库,将源库中的 `users` 表同步到了目标库中。需要根据实际情况修改连接信息、表名和字段名等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值