Files
workspace/code/fms/.tmp-fkcheck/TableSurvey.java
T
2026-08-21 23:06:56 +08:00

45 lines
2.7 KiB
Java

import java.io.FileInputStream;
import java.sql.*;
import java.util.Properties;
public class TableSurvey {
public static void main(String[] args) throws Exception {
Properties props = new Properties();
try (FileInputStream in = new FileInputStream(args[0])) { props.load(in); }
try (Connection conn = DriverManager.getConnection(props.getProperty("url"), props.getProperty("username"), props.getProperty("password"))) {
System.out.println("== ALL TABLES + ROW COUNTS ==");
try (Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(
"SELECT t.name AS tbl, SUM(p.rows) AS rowcnt " +
"FROM sys.tables t JOIN sys.partitions p ON p.object_id = t.object_id AND p.index_id IN (0,1) " +
"GROUP BY t.name ORDER BY t.name")) {
while (rs.next()) System.out.printf(" %-24s rows=%s%n", rs.getString("tbl"), rs.getString("rowcnt"));
}
System.out.println("== TABLES WHOSE b_id IS IDENTITY ==");
try (Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(
"SELECT OBJECT_NAME(ic.object_id) AS tbl FROM sys.identity_columns ic WHERE ic.name='b_id' ORDER BY 1")) {
int n = 0;
while (rs.next()) { System.out.println(" " + rs.getString("tbl")); n++; }
System.out.println(" count=" + n);
}
System.out.println("== PK / UNIQUE / CHECK CONSTRAINTS REFERENCING TABLES ==");
try (Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(
"SELECT OBJECT_NAME(kc.parent_object_id) AS tbl, kc.name AS cons, kc.type_desc " +
"FROM sys.key_constraints kc WHERE kc.parent_object_id IN (SELECT object_id FROM sys.tables) " +
"ORDER BY tbl, cons")) {
while (rs.next()) System.out.printf(" %-24s %-30s %s%n", rs.getString("tbl"), rs.getString("cons"), rs.getString("type_desc"));
}
System.out.println("== NON-CLUSTERED INDEXES ==");
try (Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(
"SELECT OBJECT_NAME(i.object_id) AS tbl, i.name AS idx, i.is_unique " +
"FROM sys.indexes i WHERE i.object_id IN (SELECT object_id FROM sys.tables) AND i.type = 2 " +
"ORDER BY tbl, idx")) {
while (rs.next()) System.out.printf(" %-24s %-32s unique=%s%n", rs.getString("tbl"), rs.getString("idx"), rs.getBoolean("is_unique"));
}
}
}
}