| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import java.sql.*;
- import java.nio.file.*;
- public class V08AllTenants {
- 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";
- static final String USER = "root";
- static final String PASS = "Ylrz_1q2w3e4r5t6y";
- public static void main(String[] args) throws Exception {
- Class.forName("com.mysql.cj.jdbc.Driver");
- 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"));
- try (Connection conn = DriverManager.getConnection(HOST, USER, PASS);
- Statement s = conn.createStatement()) {
- // 找所有租户库
- java.util.List<String> dbs = new java.util.ArrayList<>();
- ResultSet rs = s.executeQuery("SHOW DATABASES LIKE 'fs_tenant_%'");
- while (rs.next()) dbs.add(rs.getString(1));
- System.out.println("=== Found " + dbs.size() + " tenant DBs ===\n");
- for (String db : dbs) {
- String url = "jdbc:mysql://cq-cdb-8fjmemkb.sql.tencentcdb.com:27220/" + db + "?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true";
- try (Connection tc = DriverManager.getConnection(url, USER, PASS);
- Statement ts = tc.createStatement()) {
- // 执行前计数
- int beforeSys = cnt(ts, "sys_menu");
- int beforeComp = cnt(ts, "company_menu");
- ts.execute(sql);
- int afterSys = cnt(ts, "sys_menu");
- int afterComp = cnt(ts, "company_menu");
- System.out.printf("%-32s sys_menu: %2d -> %2d company_menu: %2d -> %2d\n",
- db, beforeSys, afterSys, beforeComp, afterComp);
- } catch (Exception e) {
- System.out.printf("%-32s ERROR: %s\n", db, e.getMessage().split("\\n")[0]);
- }
- }
- System.out.println("\n=== DONE ===");
- }
- }
- static int cnt(Statement s, String t) throws SQLException {
- ResultSet r = s.executeQuery("SELECT COUNT(1) FROM " + t + " WHERE menu_id BETWEEN 29900 AND 29999");
- r.next(); return r.getInt(1);
- }
- }
|