mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-08-02 21:50:43 +08:00
fix-mysql-procedures-query-and-dm-table-ddl-query
This commit is contained in:
@ -33,28 +33,31 @@ public class DMMetaData extends DefaultMetaService implements MetaData {
|
||||
return "\"" + tableName + "\"";
|
||||
}
|
||||
|
||||
private static String tableDDL = "SELECT dbms_metadata.get_ddl('TABLE', '%s','%s') as ddl FROM dual ;";
|
||||
private static String tableComment = "select COMMENTS from dba_tab_comments where OWNER='%s' and TABLE_TYPE='TABLE' and TABLE_NAME='%s';";
|
||||
private static String columnComment = "SELECT COLNAME,COMMENT$ FROM SYS.SYSCOLUMNCOMMENTS where SCHNAME = '%s' and TVNAME = '%s' and TABLE_TYPE = 'TABLE';";
|
||||
|
||||
public String tableDDL(Connection connection, String databaseName, String schemaName, String tableName) {
|
||||
String sql = """
|
||||
SELECT
|
||||
(SELECT comments FROM user_tab_comments WHERE table_name = '%s') AS comments,
|
||||
(SELECT dbms_metadata.get_ddl('TABLE', '%s', '%s') FROM dual) AS ddl
|
||||
FROM dual;
|
||||
""";
|
||||
String tableDDLSql = String.format(tableDDL, tableName, schemaName);
|
||||
String tableCommentSql = String.format(tableComment, schemaName, tableName);
|
||||
String columnCommentSql = String.format(columnComment, schemaName, tableName);
|
||||
StringBuilder ddlBuilder = new StringBuilder();
|
||||
String tableDDLSql = String.format(sql, tableName, tableName, schemaName);
|
||||
SQLExecutor.getInstance().execute(connection, tableDDLSql, resultSet -> {
|
||||
if (resultSet.next()) {
|
||||
String ddl = resultSet.getString("ddl");
|
||||
String comment = resultSet.getString("comments");
|
||||
if (StringUtils.isNotBlank(comment)) {
|
||||
ddlBuilder.append(ddl).append("\n").append("COMMENT ON TABLE ").append(format(schemaName))
|
||||
.append(".").append(format(tableName)).append(" IS ").append("'").append(comment).append("';");
|
||||
ddlBuilder.append(ddl).append("\n");
|
||||
}
|
||||
});
|
||||
SQLExecutor.getInstance().execute(connection, tableCommentSql, resultSet -> {
|
||||
if (resultSet.next()) {
|
||||
String comments = resultSet.getString("COMMENTS");
|
||||
if (Objects.nonNull(comments)) {
|
||||
ddlBuilder.append("COMMENT ON TABLE ").append(format(schemaName)).append(".").append(format(tableName))
|
||||
.append(" IS ").append(comments).append(";").append("\n");
|
||||
}
|
||||
}
|
||||
});
|
||||
String columnCommentsSql =String.format("select COLNAME,COMMENT$ from SYS.SYSCOLUMNCOMMENTS\n" +
|
||||
"where SCHNAME = '%s' and TVNAME = '%s'and TABLE_TYPE = 'TABLE';", schemaName,tableName);
|
||||
SQLExecutor.getInstance().execute(connection, columnCommentsSql, resultSet->{
|
||||
SQLExecutor.getInstance().execute(connection, columnCommentSql, resultSet -> {
|
||||
while (resultSet.next()) {
|
||||
String columnName = resultSet.getString("COLNAME");
|
||||
String comment = resultSet.getString("COMMENT$");
|
||||
|
@ -125,8 +125,8 @@ public class MysqlMetaData extends DefaultMetaService implements MetaData {
|
||||
String sql = "SHOW PROCEDURE STATUS WHERE Db = DATABASE()";
|
||||
return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
||||
ArrayList<Procedure> procedures = new ArrayList<>();
|
||||
Procedure procedure = new Procedure();
|
||||
while (resultSet.next()){
|
||||
Procedure procedure = new Procedure();
|
||||
procedure.setProcedureName(resultSet.getString("Name"));
|
||||
procedures.add(procedure);
|
||||
}
|
||||
|
Reference in New Issue
Block a user