CheckDup.java 1.8 KB

12345678910111213141516171819202122232425262728293031323334
  1. import java.sql.*;
  2. public class CheckDup {
  3. static final String U = "root"; static final String P = "Ylrz_1q2w3e4r5t6y";
  4. public static void main(String[] a) throws Exception {
  5. Class.forName("com.mysql.cj.jdbc.Driver");
  6. String[] dbs = {"fs_tenant_cs1","fs_tenant_t202606046007","fs_tenant_t202606119691","fs_tenant_t202606124273","fs_tenant_t202606154320","fs_tenant_t202606167389","fs_tenant_t202606174488","fs_tenant_t202606179328","fs_tenant_t202606179893"};
  7. for (String db : dbs) {
  8. String url = "jdbc:mysql://cq-cdb-8fjmemkb.sql.tencentcdb.com:27220/" + db + "?serverTimezone=Asia/Shanghai";
  9. try (Connection c = DriverManager.getConnection(url, U, P); Statement s = c.createStatement()) {
  10. // Find duplicate menu_ids in company_menu
  11. ResultSet rs = s.executeQuery(
  12. "SELECT menu_id, menu_name, COUNT(*) AS cnt, " +
  13. "GROUP_CONCAT(CONCAT('cid=',IFNULL(company_id,'NULL'),' vis=',visible)) AS versions " +
  14. "FROM company_menu WHERE menu_id BETWEEN 29900 AND 29999 " +
  15. "GROUP BY menu_id HAVING cnt > 1 ORDER BY menu_id");
  16. int dup = 0;
  17. while (rs.next()) {
  18. if (dup == 0) System.out.println("\n" + db + " DUPLICATES:");
  19. System.out.printf(" %s %-20s x%d [%s]\n",
  20. rs.getString(1), rs.getString(2), rs.getInt(3), rs.getString(4));
  21. dup++;
  22. }
  23. if (dup == 0) {
  24. ResultSet r2 = s.executeQuery("SELECT COUNT(1) FROM company_menu WHERE menu_id BETWEEN 29900 AND 29999");
  25. r2.next();
  26. System.out.printf("%s: %d entries, 0 duplicates\n", db, r2.getInt(1));
  27. }
  28. }
  29. }
  30. }
  31. }