数据库数据合并迁移

This commit is contained in:
wuchunlei
2024-04-18 15:39:11 +08:00
parent 00a5129b45
commit bf2638aadb

View File

@@ -0,0 +1,369 @@
package com.peanut.common.utils;
import java.io.IOException;
import java.sql.*;
import java.util.*;
public class DataMigrationUtil {
public static void main(String[] args){
// catalogue();
// courseCatalogue();
// courseCatalogueChapter();
// courseCatalogueChapterVideo();
}
public static void catalogue(){
try {
Connection yljkconn = DriverManager.getConnection(
"jdbc:mysql://goldorchid.mysql.rds.aliyuncs.com:3309/everhealth?",
"yljkmaster", "Wu751019!@");
PreparedStatement statement = yljkconn.prepareStatement("select * from t_curriculum_catalogue where valid = 1 and poid in (select oid from t_curriculum_catalogue where valid = 1 and poid is null) and courseFee like '%,%' ");
ResultSet resultSet = statement.executeQuery();
List<Map> list = new ArrayList();
while(resultSet.next()){
Map map = new HashMap();
map.put("oid",resultSet.getString("oid"));
map.put("title",resultSet.getString("title"));
map.put("createDate",resultSet.getString("createDate"));
list.add(map);
}
resultSet.close();
yljkconn.close();
statement.close();
Connection connection = DriverManager.getConnection(
"jdbc:mysql://rm-2zev4157t67trxuu3yo.mysql.rds.aliyuncs.com:3306/e_book_test?rewriteBatchedStatements=true",
"nuttyreading", "Wu751019!");
// 关闭自动提交事务,改为手动提交
connection.setAutoCommit(false);
System.out.println("===== 开始插入数据 =====");
long startTime = System.currentTimeMillis();
PreparedStatement preparedStatement = connection.prepareStatement("INSERT ignore INTO course (uid,title,create_time) VALUES ( ?, ?, ?)");
for (int i = 0; i < list.size(); i++) {
preparedStatement.setString(1,list.get(i).get("oid").toString());
preparedStatement.setString(2,list.get(i).get("title").toString());
preparedStatement.setString(3,list.get(i).get("createDate").toString());
// 添加到批处理中
preparedStatement.addBatch();
if (i+1 % 5000 == 0) {
long startTime1 = System.currentTimeMillis();
// 每1000条数据提交一次
preparedStatement.executeBatch();
connection.commit();
long spendTime1 = System.currentTimeMillis()-startTime1;
System.out.println("成功插入第 "+ i+1+" 条数据,耗时:"+spendTime1+"毫秒");
}
}
// 处理剩余的数据
preparedStatement.executeBatch();
connection.commit();
connection.setAutoCommit(true);//在把自动提交打开
long spendTime = System.currentTimeMillis()-startTime;
System.out.println("成功插入"+list.size()+"条数据,耗时:"+spendTime+"毫秒");
connection.close();
preparedStatement.close();
} catch (SQLException e) {
System.out.println("Error: " + e.getMessage());
}
}
public static void courseCatalogue(){
try {
Connection fzdsconn = DriverManager.getConnection(
"jdbc:mysql://rm-2zev4157t67trxuu3yo.mysql.rds.aliyuncs.com:3306/e_book_test?rewriteBatchedStatements=true",
"nuttyreading", "Wu751019!");
PreparedStatement fzdsstatement = fzdsconn.prepareStatement("select id,uid from course ");
ResultSet fzdsresultSet = fzdsstatement.executeQuery();
List<Map> fzdslist = new ArrayList();
while(fzdsresultSet.next()){
Map map = new HashMap();
map.put("id",fzdsresultSet.getString("id"));
map.put("uid",fzdsresultSet.getString("uid"));
fzdslist.add(map);
}
fzdsresultSet.close();
fzdsconn.close();
fzdsstatement.close();
Connection yljkconn = DriverManager.getConnection(
"jdbc:mysql://goldorchid.mysql.rds.aliyuncs.com:3309/everhealth?",
"yljkmaster", "Wu751019!@");
Connection connection = DriverManager.getConnection(
"jdbc:mysql://rm-2zev4157t67trxuu3yo.mysql.rds.aliyuncs.com:3306/e_book_test?rewriteBatchedStatements=true",
"nuttyreading", "Wu751019!");
// 关闭自动提交事务,改为手动提交
connection.setAutoCommit(false);
long startTime = System.currentTimeMillis();
System.out.println("===== 开始插入数据 =====");
int res = 0;
PreparedStatement preparedStatement = connection.prepareStatement(
"INSERT ignore INTO course_catalogue (course_id,title,half_fee,fee,create_time) VALUES (?,?,?,?,?)");
for (int q=1;q<=fzdslist.size(); q++){
String selectSql = "select * from t_curriculum_catalogue where valid = 1 and poid = '"+fzdslist.get(q-1).get("uid")+"'";
PreparedStatement statement = yljkconn.prepareStatement(selectSql);
ResultSet resultSet = statement.executeQuery();
Map map = new HashMap();
while(resultSet.next()){
map.put("title",resultSet.getString("title"));
map.put("halfFee",resultSet.getString("courseFee").split(",")[0]);
map.put("fee",resultSet.getString("courseFee").split(",")[1]);
map.put("createDate",resultSet.getString("createDate"));
if (map.size() > 0){
preparedStatement.setString(1,fzdslist.get(q-1).get("id").toString());
preparedStatement.setString(2,map.get("title").toString());
preparedStatement.setString(3,map.get("halfFee").toString());
preparedStatement.setString(4,map.get("fee").toString());
preparedStatement.setString(5,map.get("createDate").toString());
// 添加到批处理中
preparedStatement.addBatch();
res++;
if (res % 5000 == 0) {
long startTime1 = System.currentTimeMillis();
preparedStatement.executeBatch();
connection.commit();
long spendTime1 = System.currentTimeMillis()-startTime1;
System.out.println("成功插入第"+ res +" 条数据,耗时:"+spendTime1+"毫秒");
}
}
}
resultSet.close();
statement.close();
}
//处理剩余的数据
preparedStatement.executeBatch();
connection.commit();
preparedStatement.close();
yljkconn.close();
connection.setAutoCommit(true);//在把自动提交打开
connection.close();
long spendTime = System.currentTimeMillis()-startTime;
System.out.println("成功插入"+res+"条数据,耗时:"+spendTime+"毫秒");
} catch (SQLException e) {
System.out.println("Error: " + e.getMessage());
}
}
public static void courseCatalogueChapter(){
try {
Connection fzdsconn = DriverManager.getConnection(
"jdbc:mysql://rm-2zev4157t67trxuu3yo.mysql.rds.aliyuncs.com:3306/e_book_test?rewriteBatchedStatements=true",
"nuttyreading", "Wu751019!");
PreparedStatement fzdsstatement = fzdsconn.prepareStatement(
"select c.id,c.uid,cc.id as ccid from course c left join course_catalogue cc on c.id = cc.course_id ");
ResultSet fzdsresultSet = fzdsstatement.executeQuery();
List<Map> fzdslist = new ArrayList();
while(fzdsresultSet.next()){
Map map = new HashMap();
map.put("id",fzdsresultSet.getString("id"));
map.put("uid",fzdsresultSet.getString("uid"));
map.put("ccid",fzdsresultSet.getString("ccid"));
fzdslist.add(map);
}
Connection yljkconn = DriverManager.getConnection(
"jdbc:mysql://goldorchid.mysql.rds.aliyuncs.com:3309/everhealth?",
"yljkmaster", "Wu751019!@");
Connection connection = DriverManager.getConnection(
"jdbc:mysql://rm-2zev4157t67trxuu3yo.mysql.rds.aliyuncs.com:3306/e_book_test?rewriteBatchedStatements=true",
"nuttyreading", "Wu751019!");
long startTime = System.currentTimeMillis();
System.out.println("===== 开始插入数据 =====");
int res = 0;
PreparedStatement preparedStatement = connection.prepareStatement(
"INSERT ignore INTO course_catalogue_chapter (course_id,catalogue_id,title,img_url,content,create_time,sort) VALUES ( ?, ?, ?, ?, ?, ?, ?)");
for (int q=1;q<=fzdslist.size(); q++){
String selectSql = "select * from t_curriculum_detail where valid = 1 and poid in (select oid from t_curriculum_catalogue where valid = 1 and poid = '"+fzdslist.get(q-1).get("uid")+"')";
PreparedStatement statement = yljkconn.prepareStatement(selectSql);
ResultSet resultSet = statement.executeQuery();
Map map = new HashMap();
while(resultSet.next()){
map.put("title",resultSet.getString("title"));
map.put("imgUrl",resultSet.getString("imgUrl"));
map.put("content",resultSet.getString("explains"));
map.put("createDate",resultSet.getString("createDate"));
map.put("sort",resultSet.getString("orderNo"));
if (map.size() > 0){
preparedStatement.setString(1,fzdslist.get(q-1).get("id").toString());
preparedStatement.setString(2,fzdslist.get(q-1).get("ccid").toString());
preparedStatement.setString(3,map.get("title").toString());
preparedStatement.setString(4,map.get("imgUrl").toString());
preparedStatement.setString(5,map.get("content").toString());
preparedStatement.setString(6,map.get("createDate").toString());
preparedStatement.setString(7,map.get("sort").toString());
// 添加到批处理中
preparedStatement.addBatch();
res++;
if (res % 5000 == 0) {
long startTime1 = System.currentTimeMillis();
preparedStatement.executeBatch();
long spendTime1 = System.currentTimeMillis()-startTime1;
System.out.println("成功插入第"+ res +" 条数据,耗时:"+spendTime1+"毫秒");
}
}
}
}
//处理剩余的数据
preparedStatement.executeBatch();
long spendTime = System.currentTimeMillis()-startTime;
System.out.println("成功插入"+res+"条数据,耗时:"+spendTime+"毫秒");
fzdsconn.close();
yljkconn.close();
connection.close();
} catch (SQLException e) {
System.out.println("Error: " + e.getMessage());
}
}
public static void courseCatalogueChapterVideo(){
try {
Connection fzdsconn = DriverManager.getConnection(
"jdbc:mysql://rm-2zev4157t67trxuu3yo.mysql.rds.aliyuncs.com:3306/e_book_test?rewriteBatchedStatements=true",
"nuttyreading", "Wu751019!");
PreparedStatement fzdsstatement = fzdsconn.prepareStatement(
"select c.uid,ccc.id as cccid,ccc.title from course c left join course_catalogue_chapter ccc on c.id = ccc.course_id");
ResultSet fzdsresultSet = fzdsstatement.executeQuery();
List<Map> fzdslist = new ArrayList();
while(fzdsresultSet.next()){
Map map = new HashMap();
map.put("uid",fzdsresultSet.getString("uid"));
map.put("cccid",fzdsresultSet.getString("cccid"));
map.put("title",fzdsresultSet.getString("title"));
fzdslist.add(map);
}
Connection yljkconn = DriverManager.getConnection(
"jdbc:mysql://goldorchid.mysql.rds.aliyuncs.com:3309/everhealth?",
"yljkmaster", "Wu751019!@");
Connection connection = DriverManager.getConnection(
"jdbc:mysql://rm-2zev4157t67trxuu3yo.mysql.rds.aliyuncs.com:3306/e_book_test?rewriteBatchedStatements=true",
"nuttyreading", "Wu751019!");
long startTime = System.currentTimeMillis();
System.out.println("===== 开始插入数据 =====");
int res = 0;
PreparedStatement preparedStatement = connection.prepareStatement(
"INSERT ignore INTO course_catalogue_chapter_video (chapter_id,type,video,create_time,sort) VALUES (?, ?, ?, ?, ?)");
for (int q=1;q<=fzdslist.size(); q++){
String selectSql = "select * from t_curriculum_detail where valid = 1 and poid in (select oid from t_curriculum_catalogue where valid = 1 and poid = '"+fzdslist.get(q-1).get("uid")+"') and title = '"+fzdslist.get(q-1).get("title")+"' ";
PreparedStatement statement = yljkconn.prepareStatement(selectSql);
ResultSet resultSet = statement.executeQuery();
Map map = new HashMap();
while(resultSet.next()){
map.put("videoType",resultSet.getString("videoType"));
if (map.get("videoType").toString().equals("01")){
map.put("type","0");
map.put("video",resultSet.getString("videos"));
}else if (map.get("videoType").equals("02")){
map.put("type","1");
map.put("video",resultSet.getString("videoId"));
}
map.put("createDate",resultSet.getString("createDate"));
if (map.size() > 0){
String[] tt = map.get("video").toString().split(",");
if (tt.length>0){
for (int r=0;r<tt.length;r++){
if (!tt[r].equals("")) {
preparedStatement.setString(1,fzdslist.get(q-1).get("cccid").toString());
preparedStatement.setString(2,map.get("type").toString());
preparedStatement.setString(3,tt[r]);
preparedStatement.setString(4,map.get("createDate").toString());
preparedStatement.setString(5,r+1+"");
// 添加到批处理中
preparedStatement.addBatch();
res++;
if (res % 5000 == 0) {
long startTime1 = System.currentTimeMillis();
preparedStatement.executeBatch();
long spendTime1 = System.currentTimeMillis()-startTime1;
System.out.println("成功插入第"+ res +" 条数据,耗时:"+spendTime1+"毫秒");
}
}
}
}
}
}
}
//处理剩余的数据
preparedStatement.executeBatch();
long spendTime = System.currentTimeMillis()-startTime;
System.out.println("成功插入"+res+"条数据,耗时:"+spendTime+"毫秒");
fzdsconn.close();
yljkconn.close();
connection.close();
} catch (SQLException e) {
System.out.println("Error: " + e.getMessage());
}
}
public static void user(){
try {
Connection fzdsconn = DriverManager.getConnection(
"jdbc:mysql://goldorchid.mysql.rds.aliyuncs.com:3309/everhealth?",
"yljkmaster", "Wu751019!@");
Connection yljkconn = DriverManager.getConnection(
"jdbc:mysql://goldorchid.mysql.rds.aliyuncs.com:3309/everhealth?",
"yljkmaster", "Wu751019!@");
PreparedStatement statement = yljkconn.prepareStatement("select oid,cellPhone,nameCN,nickName,superVIP,point,pointByJF,payStatus,paydate,payValidDate from t_customer where valid = 1 ");
ResultSet resultSet = statement.executeQuery();
List<Map> list = new ArrayList();
while(resultSet.next()){
Map map = new HashMap();
map.put("oid",resultSet.getString("oid"));
map.put("cellPhone",resultSet.getString("cellPhone"));
map.put("nameCN",resultSet.getString("nameCN"));
map.put("nickName",resultSet.getString("nickName"));
map.put("superVIP",resultSet.getString("superVIP"));
map.put("point",resultSet.getString("point"));
map.put("pointByJF",resultSet.getString("pointByJF"));
map.put("payStatus",resultSet.getString("payStatus"));
map.put("paydate",resultSet.getString("paydate"));
map.put("payValidDate",resultSet.getString("payValidDate"));
list.add(map);
}
resultSet.close();
statement.close();
for (int i=1;i<=list.size(); i++){
//已绑定过
PreparedStatement oidStatements = fzdsconn.prepareStatement("select * from user_copy1 where del_flag = 0 and yljk_oid = '"+list.get(i).get("oid")+"' ");
ResultSet oidResultSet = oidStatements.executeQuery();
if (oidResultSet.wasNull()){
//未绑定过,用电话查询
PreparedStatement telStatements = fzdsconn.prepareStatement("select * from user_copy1 where del_flag = 0 and tel = '"+list.get(i).get("cellPhone")+"' ");
ResultSet telResultSet = telStatements.executeQuery();
if (telResultSet.wasNull()){
}
}else {
while(resultSet.next()){
PreparedStatement oidStatement = fzdsconn.prepareStatement("update user_copy1 set " +
"name = if(isnull(name),"+list.get(i).get("nameCN")+",name) , nickname = if(isnull(nickname),"+list.get(i).get("nickName")+",nickname) ," +
"tel = if(isnull(tel),"+list.get(i).get("cellPhone")+",tel) ," +
"vip= "+list.get(i).get("payStatus")+" ,peanut_coin = peanut_coin + "+list.get(i).get("point")+" , jf = jf + "+list.get(i).get("pointByJF")+" where id = "+resultSet.getString("id")+"");
}
}
}
} catch (SQLException e) {
System.out.println("Error: " + e.getMessage());
}
}
}