V08AllTenants.java 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import java.sql.*;
  2. import java.nio.file.*;
  3. public class V08AllTenants {
  4. static final String HOST = "jdbc:mysql://cq-cdb-8fjmemkb.sql.tencentcdb.com:27220/?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true";
  5. static final String USER = "root";
  6. static final String PASS = "Ylrz_1q2w3e4r5t6y";
  7. public static void main(String[] args) throws Exception {
  8. Class.forName("com.mysql.cj.jdbc.Driver");
  9. String sql = Files.readString(Paths.get("d:\\ylrz_saas_new\\java\\fs-agent\\src\\main\\resources\\db\\migration\\tenant\\V20260618_08__lobster_menu_complete_sync.sql"));
  10. try (Connection conn = DriverManager.getConnection(HOST, USER, PASS);
  11. Statement s = conn.createStatement()) {
  12. // 找所有租户库
  13. java.util.List<String> dbs = new java.util.ArrayList<>();
  14. ResultSet rs = s.executeQuery("SHOW DATABASES LIKE 'fs_tenant_%'");
  15. while (rs.next()) dbs.add(rs.getString(1));
  16. System.out.println("=== Found " + dbs.size() + " tenant DBs ===\n");
  17. for (String db : dbs) {
  18. String url = "jdbc:mysql://cq-cdb-8fjmemkb.sql.tencentcdb.com:27220/" + db + "?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true";
  19. try (Connection tc = DriverManager.getConnection(url, USER, PASS);
  20. Statement ts = tc.createStatement()) {
  21. // 执行前计数
  22. int beforeSys = cnt(ts, "sys_menu");
  23. int beforeComp = cnt(ts, "company_menu");
  24. ts.execute(sql);
  25. int afterSys = cnt(ts, "sys_menu");
  26. int afterComp = cnt(ts, "company_menu");
  27. System.out.printf("%-32s sys_menu: %2d -> %2d company_menu: %2d -> %2d\n",
  28. db, beforeSys, afterSys, beforeComp, afterComp);
  29. } catch (Exception e) {
  30. System.out.printf("%-32s ERROR: %s\n", db, e.getMessage().split("\\n")[0]);
  31. }
  32. }
  33. System.out.println("\n=== DONE ===");
  34. }
  35. }
  36. static int cnt(Statement s, String t) throws SQLException {
  37. ResultSet r = s.executeQuery("SELECT COUNT(1) FROM " + t + " WHERE menu_id BETWEEN 29900 AND 29999");
  38. r.next(); return r.getInt(1);
  39. }
  40. }