main
parent
10be376130
commit
b1c9d4caaa
@ -0,0 +1,115 @@
|
||||
package com.nm.gsgl.test;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.ResultSetMetaData;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author: shuguang
|
||||
* @date: 2024年06月18日 17:02
|
||||
* @description: 数据库表中数据比对测试
|
||||
*/
|
||||
public class DataTableComparisonTest {
|
||||
|
||||
public static void main(String[] args) {
|
||||
// 数据库连接信息
|
||||
String db1Url = "jdbc:oracle:thin:@10.15.100.5:1521/TORCL";
|
||||
String db2Url = "jdbc:oracle:thin:@10.15.100.5:1521/TORCL";
|
||||
String username = "nmgmpayadmin";
|
||||
String password = "nmgh90[]";
|
||||
String username2 = "nmghlbeadmin";
|
||||
String password2 = "nmlwzx2021[]";
|
||||
// SQL查询语句
|
||||
//String query = "SELECT SPLITDATE,PROCESSTIME,AMOUNT,TRANSACTIONCOUNT,BASICFILENAME FROM CT_ETC_CLEAR_SUM WHERE PROCESSTIME>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and PROCESSTIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY PROCESSTIME ";
|
||||
//String query = "SELECT SERPROVINCEID,CLEARDATE,PROCESSTIME,PAYERAMOUNT,PAYERMESSAGECOUNT,RECEIVERAMOUNT FROM CT_OTHER_CLEAR_SUM_1 WHERE PROCESSTIME>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and PROCESSTIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY PROCESSTIME ";
|
||||
//String query = "SELECT count(*) FROM CT_GANTRYPASSID WHERE EXTIME>=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') and EXTIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ";
|
||||
//String query = "SELECT ID,SPLITTIME,EXTIME FROM CT_OUT_PORT_ETC_NOPAY WHERE EXTIME>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and EXTIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY EXTIME";
|
||||
//String query = "SELECT ID,SPLITTIME,ENTIME FROM CT_OTHER_OUT_PORT WHERE ENTIME>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and ENTIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY EXTIME";
|
||||
//String query = "SELECT ID,SPLITTIME FROM CT_OTHER_GANTRYPASSID WHERE SPLITTIME>=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') and SPLITTIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY ID " ;
|
||||
//String query = "SELECT ID,SPLITTIME FROM CT_OUTOTHER_GANTRY WHERE SPLITTIME>=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') and SPLITTIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY ID " ;
|
||||
String query = "SELECT ID,REFUNDID,PROCESSTIME FROM CT_SERVERREFUND_TABLE WHERE PROCESSTIME>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and PROCESSTIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY ID" ;
|
||||
//304 ID长度不一致 0114012399230100003730202404221452502024
|
||||
//0114012399230100003730202404221452502024061609034300202
|
||||
//String query = "SELECT ID,RESTITUTIONID,PROCESSTIME FROM CT_SERVERLATERPAY_TABLE WHERE PROCESSTIME>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and PROCESSTIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY ID" ;
|
||||
//String query = "SELECT PASSID,VEHICLEID,RECEIVERID,PAYERID,FEE,RECEIVETIME FROM CT_GATHERDETAIL_TABLE WHERE RECEIVETIME>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and RECEIVETIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY PASSID" ;
|
||||
//String query = "SELECT PASSID,VEHICLEID,ORIGIN,PAYERID,PAYFEE,PAYTIME FROM CT_PAYERDETAIL_TABLE WHERE PAYTIME>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and PAYTIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY PASSID" ;
|
||||
//String query = "SELECT CHECKID FROM CHECKRESULT_INFO_TABLE WHERE CHECKTIME>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and CHECKTIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY CHECKID" ;
|
||||
//String query = "SELECT CHECKID,VEHICLEID,CHECKTIME FROM CHECKRESULT_TABLE_NEW WHERE CHECKTIME>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and CHECKTIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY CHECKID" ;
|
||||
//String query = "SELECT ID,EXTIME FROM BSDZ_DISPUTE_PASSPROV WHERE EXTIME>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and EXTIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY ID" ;
|
||||
//String query = "SELECT SPLITDATE,SERPROVINCEID FROM BSDZ_CLEAR_SUM WHERE SPLITDATE>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and SPLITDATE<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY SPLITDATE" ;
|
||||
//String query = "SELECT ID,PROVEXTIME FROM BSDZ_NOOUTPORT_S2_DOWN WHERE PROVEXTIME>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and PROVEXTIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY ID" ;
|
||||
//String query = "SELECT ID,SPLITDATE FROM BSDZ_NOSPLIT_S2_DOWN WHERE SPLITDATE>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and SPLITDATE<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY ID" ;
|
||||
//String query = "SELECT ID,EXTIME FROM BSDZ_DISPUTE_EXPROV WHERE EXTIME>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and EXTIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY ID" ;
|
||||
|
||||
//String query = "SELECT ID,PROVEXTIME FROM BSDZ_NOOUTPORT_S3_DOWN WHERE PROVEXTIME>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and PROVEXTIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY ID" ;
|
||||
//String query = "SELECT ID,PROVEXTIME FROM BSDZ_NOOUTPORT_RESULT WHERE PROVEXTIME>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and PROVEXTIME<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY ID" ;
|
||||
//String query = "SELECT ID,SPLITDATE FROM BSDZ_NOSPLIT_S3_DOWN WHERE SPLITDATE>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and SPLITDATE<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY ID" ;
|
||||
//String query = "SELECT ID,SPLITDATE FROM BSDZ_NOSPLIT_RESULT WHERE SPLITDATE>=to_date('2024-06-16 00:00:00','yyyy-mm-dd hh24:mi:ss') and SPLITDATE<=to_date('2024-06-17 00:00:00','yyyy-mm-dd hh24:mi:ss') ORDER BY ID" ;
|
||||
|
||||
|
||||
|
||||
// 连接数据库并获取数据
|
||||
List<Map<String, Object>> dataFromDb1 = fetchData(db1Url, query, username, password);
|
||||
List<Map<String, Object>> dataFromDb2 = fetchData(db2Url, query, username2, password2);
|
||||
|
||||
// 比较数据
|
||||
|
||||
|
||||
boolean areEqual = areListsEqual(dataFromDb1, dataFromDb2);
|
||||
System.out.println("数据是否一致: " + areEqual);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private static List<Map<String, Object>> fetchData(String url, String query, String user, String password) {
|
||||
List<Map<String, Object>> dataList = new ArrayList<>();
|
||||
try (Connection conn = DriverManager.getConnection(url, user, password);
|
||||
Statement stmt = conn.createStatement();
|
||||
ResultSet rs = stmt.executeQuery(query)) {
|
||||
|
||||
ResultSetMetaData metaData = rs.getMetaData();
|
||||
int columnCount = metaData.getColumnCount();
|
||||
|
||||
while (rs.next()) {
|
||||
Map<String, Object> row = new HashMap<>();
|
||||
for (int i = 1; i <= columnCount; i++) {
|
||||
row.put(metaData.getColumnName(i), rs.getObject(i));
|
||||
}
|
||||
dataList.add(row);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return dataList;
|
||||
}
|
||||
|
||||
public static boolean areListsEqual(List<Map<String, Object>> list1, List<Map<String, Object>> list2) {
|
||||
if (list1.size() != list2.size()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 对列表中的Map进行排序
|
||||
list1.sort(Comparator.comparing(Map::toString));
|
||||
list2.sort(Comparator.comparing(Map::toString));
|
||||
|
||||
for (int i = 0; i < list1.size(); i++) {
|
||||
Map<String, Object> map1 = list1.get(i);
|
||||
Map<String, Object> map2 = list2.get(i);
|
||||
if (!map1.equals(map2) || !map2.equals(map1)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue