mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-07-31 11:42:41 +08:00
refactor(OracleDBManage): fix get tableDDL
This commit is contained in:
@ -12,13 +12,10 @@ import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.ResultSetMetaData;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Objects;
|
||||
|
||||
@Slf4j
|
||||
public class OracleDBManage extends DefaultDBManage implements DBManage {
|
||||
private static String TABLE_DDL_SQL = "SELECT DBMS_METADATA.GET_DDL('TABLE', table_name) as ddl FROM all_tables WHERE owner = '%s' AND table_name = '%s'";
|
||||
private static String TABLE_COMMENT_SQL = "SELECT 'COMMENT ON TABLE ' || table_name || ' IS ''' || comments || ''';' AS table_comment_ddl FROM user_tab_comments WHERE table_name = '%s'";
|
||||
private static String TABLE_COLUMN_COMMENT_SQL = "SELECT 'COMMENT ON COLUMN ' || table_name || '.' || column_name || ' IS ''' || comments || ''';' AS column_comment_ddl " +
|
||||
"FROM user_col_comments " +
|
||||
@ -49,20 +46,18 @@ public class OracleDBManage extends DefaultDBManage implements DBManage {
|
||||
|
||||
|
||||
public void exportTable(Connection connection, String databaseName, String schemaName, String tableName, AsyncContext asyncContext) throws SQLException {
|
||||
String sql = String.format(TABLE_DDL_SQL, schemaName, tableName);
|
||||
try (ResultSet resultSet = connection.createStatement().executeQuery(sql)) {
|
||||
if (resultSet.next()) {
|
||||
String tableDDL = Chat2DBContext.getMetaData().tableDDL(connection, databaseName, schemaName, tableName);
|
||||
StringBuilder sqlBuilder = new StringBuilder();
|
||||
sqlBuilder.append("DROP TABLE ").append(schemaName).append(".").append(tableName).append(";")
|
||||
.append(resultSet.getString("ddl")).append(";").append("\n");
|
||||
.append(tableDDL).append(";").append("\n");
|
||||
asyncContext.write(sqlBuilder.toString());
|
||||
}
|
||||
|
||||
exportTableComments(connection, tableName, asyncContext);
|
||||
exportTableColumnsComments(connection, tableName, asyncContext);
|
||||
if (asyncContext.isContainsData()) {
|
||||
exportTableData(connection, databaseName, schemaName, tableName, asyncContext);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void exportTableComments(Connection connection, String tableName, AsyncContext asyncContext) throws SQLException {
|
||||
|
Reference in New Issue
Block a user