Newer
Older
irisDatabase / src / com / casic / birmm / CompareTwoDatabase.java
TAN YUE on 9 Oct 2020 6 KB 20201008 初始建立
package com.casic.birmm;

import com.casic.birmm.util.ByteUtil;
import com.casic.birmm.util.ConnectionManager;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.log4j.Logger;

import java.sql.Connection;
import java.util.List;

public class CompareTwoDatabase {
    public static void main(String[] args) {

        Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName());

        try {
            String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " +
                    "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " +
                    "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID";

            Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0();
            connMysql.setAutoCommit(false);

            Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0();
            connSqlserver.setAutoCommit(false);

            // 从MySQL中查询所有的人
            QueryRunner runner = new QueryRunner();
            List<Object[]> personList = (List<Object[]>) runner.query(connMysql, queryFromMysql, new ArrayListHandler());
            System.out.println(personList.size());
            for (int i = 0; i < personList.size(); i++) {
                Object[] person = personList.get(i);
                String name = (String) person[0];
                String gender = (String) person[1];
                if (person[1].equals("1")) {
                    gender = "男";
                } else if (person[1].equals("2")) {
                    gender = "女";
                }
                String dept = (String) person[2];

                // 输出姓名
                logger.info(i + "\t" + name + "\t" + gender + "\t" + dept);

                String leftIris1 = "";
                if (person[4] != null) {
                    leftIris1 = ByteUtil.binToHexString((byte[]) person[4]);
                }
                String rightIris1 = "";
                if (person[5] != null) {
                    rightIris1 = ByteUtil.binToHexString((byte[]) person[5]);
                }
                String leftIris2 = "";
                if (person[6] != null) {
                    leftIris2 = ByteUtil.binToHexString((byte[]) person[6]);
                }
                String rightIris2 = "";
                if (person[7] != null) {
                    rightIris2 = ByteUtil.binToHexString((byte[]) person[7]);
                }
                String leftIris3 = "";
                if (person[8] != null) {
                    leftIris3 = ByteUtil.binToHexString((byte[]) person[8]);
                }
                String rightIris3 = "";
                if (person[9] != null) {
                    rightIris3 = ByteUtil.binToHexString((byte[]) person[9]);
                }

                // 从SQL server中查询人员
                String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " +
                        "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " +
                        "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'";
                List<Object[]> tempList = (List<Object[]>) runner.query(connSqlserver, queryStr, new ArrayListHandler());
                if (tempList != null && tempList.size() == 1) {
                    Object[] personInSQLServer = tempList.get(0);

                    String leftIris1SQLServer = "";
                    if (personInSQLServer[6] != null) {
                        leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]);
                    }
                    if (leftIris1.equals(leftIris1SQLServer) == false) {
                        logger.info("M: " + leftIris1);
                        logger.info("S: " + leftIris1SQLServer);
                    }

                    String rightIris1SQLServer = "";
                    if (personInSQLServer[7] != null) {
                        rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]);
                    }
                    if (rightIris1.equals(rightIris1SQLServer) == false) {
                        logger.info("M: " + rightIris1);
                        logger.info("S: " + rightIris1SQLServer);
                    }

                    String leftIris2SQLServer = "";
                    if (personInSQLServer[8] != null) {
                        leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]);
                    }
                    if (leftIris2.equals(leftIris2SQLServer) == false) {
                        logger.info("M: " + leftIris2);
                        logger.info("S: " + leftIris2SQLServer);
                    }

                    String rightIris2SQLServer = "";
                    if (personInSQLServer[9] != null) {
                        rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]);
                    }
                    if (rightIris2.equals(rightIris2SQLServer) == false) {
                        logger.info("M: " + rightIris2);
                        logger.info("S: " + rightIris2SQLServer);
                    }

                    String leftIris3SQLServer = "";
                    if (personInSQLServer[10] != null) {
                        leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]);
                    }
                    if (leftIris3.equals(leftIris3SQLServer) == false) {
                        logger.info("M: " + leftIris3);
                        logger.info("S: " + leftIris3SQLServer);
                    }

                    String rightIris3SQLServer = "";
                    if (personInSQLServer[11] != null) {
                        rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]);
                    }
                    if (rightIris3.equals(rightIris3SQLServer) == false) {
                        logger.info("M: " + rightIris3);
                        logger.info("S: " + rightIris3SQLServer);
                    }
                } else if (tempList.size() > 1) {
                    logger.info("same name: " + name);
                } else {
                    logger.info("missing: " + name + gender + dept + tempList.size());
                    logger.info(queryStr);
                }
            }

        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}