From a2e92098f246a1ed97f55cd8930dbcb788427dc1 Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Sat, 11 May 2024 15:50:30 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E3=80=81=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/utils/DataMigrationUtil.java | 77 +++++++++++-------- 1 file changed, 45 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/peanut/common/utils/DataMigrationUtil.java b/src/main/java/com/peanut/common/utils/DataMigrationUtil.java index 02136866..186a7f45 100644 --- a/src/main/java/com/peanut/common/utils/DataMigrationUtil.java +++ b/src/main/java/com/peanut/common/utils/DataMigrationUtil.java @@ -14,15 +14,17 @@ public class DataMigrationUtil extends Thread { Map map; int i; + Connection fzdsconn; - public DataMigrationUtil(Map map,int i){ + public DataMigrationUtil(Map map,int i,Connection fzdsconn){ this.map = map; this.i = i; + this.fzdsconn = fzdsconn; } public static void main(String[] args){ - catalogue(); +// catalogue(); // courseCatalogue(); // courseCatalogueChapter(); // courseCatalogueChapterVideo(); @@ -36,7 +38,7 @@ public class DataMigrationUtil extends Thread { 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 '%,%' "); + 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 '%,%' or courseFee = '0' or poid = '00000000000000000000000000000070' )"); ResultSet resultSet = statement.executeQuery(); List list = new ArrayList(); while(resultSet.next()){ @@ -117,33 +119,43 @@ public class DataMigrationUtil extends Thread { System.out.println("===== 开始插入数据 ====="); int res = 0; PreparedStatement preparedStatement = connection.prepareStatement( - "INSERT ignore INTO course_catalogue (course_id,title,half_fee,fee,create_time) VALUES (?,?,?,?,?)"); + "INSERT ignore INTO course_catalogue (type,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")+"'"; + String selectSql = "select ccp.poid ppoid,cc.* from t_curriculum_catalogue cc left join t_curriculum_catalogue ccp on cc.poid = ccp.oid where ccp.valid = 1 and cc.valid = 1 and cc.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+"毫秒"); - } + String halfFee = ""; + String fee = ""; + if (resultSet.getString("courseFee")!=null&&resultSet.getString("courseFee").contains(",")){ + halfFee = resultSet.getString("courseFee").split(",")[0]; + fee = resultSet.getString("courseFee").split(",")[1]; + }else if (resultSet.getString("courseFee")!=null&&"0".equals(resultSet.getString("courseFee"))){ + halfFee = "0"; + fee = "0"; + } + if ("0".equals(resultSet.getString("courseFee"))){ + preparedStatement.setInt(1,0); + }else if ("00000000000000000000000000000070".equals(resultSet.getString("ppoid"))){ + preparedStatement.setInt(1,2); + }else { + preparedStatement.setInt(1,1); + } + preparedStatement.setString(2,fzdslist.get(q-1).get("id").toString()); + preparedStatement.setString(3,resultSet.getString("title")); + preparedStatement.setString(4,halfFee); + preparedStatement.setString(5,fee); + preparedStatement.setString(6,resultSet.getString("createDate")); + // 添加到批处理中 + 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(); @@ -315,6 +327,7 @@ public class DataMigrationUtil extends Thread { public static void user(){ try { + long startTime = System.currentTimeMillis(); Connection yljkconn = DriverManager.getConnection( "jdbc:mysql://goldorchid.mysql.rds.aliyuncs.com:3309/everhealth?", "yljkmaster", "Wu751019!@"); @@ -339,12 +352,16 @@ public class DataMigrationUtil extends Thread { resultSet.close(); statement.close(); yljkconn.close(); + Connection fzdsconn = DriverManager.getConnection( + "jdbc:mysql://rm-2zev4157t67trxuu3yo.mysql.rds.aliyuncs.com:3306/e_book_test?rewriteBatchedStatements=true", + "nuttyreading", "Wu751019!"); // 1、创建服务,创建线程池 ExecutorService service = Executors.newFixedThreadPool(50); - for (int i=1;i<=list.size(); i++){ - DataMigrationUtil d1 = new DataMigrationUtil(list.get(i),i); + for (int i=0;i