mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-07-31 19:52:54 +08:00
support oracle table edit
This commit is contained in:
@ -19,10 +19,12 @@ import jakarta.validation.constraints.NotEmpty;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
public class OracleMetaData extends DefaultMetaService implements MetaData {
|
||||
|
||||
private static final String TABLE_DDL_SQL = "select dbms_metadata.get_ddl('TABLE','%s','%s') as sql from dual";
|
||||
|
||||
@Override
|
||||
public String tableDDL(Connection connection, String databaseName, String schemaName, String tableName) {
|
||||
String sql = "select dbms_metadata.get_ddl('TABLE','" + tableName + "') as sql from dual,"
|
||||
+ "user_tables where table_name = '" + tableName + "'";
|
||||
String sql = String.format(TABLE_DDL_SQL, tableName, schemaName);
|
||||
return SQLExecutor.getInstance().executeSql(connection, sql, resultSet -> {
|
||||
try {
|
||||
if (resultSet.next()) {
|
||||
@ -43,7 +45,7 @@ public class OracleMetaData extends DefaultMetaService implements MetaData {
|
||||
@Override
|
||||
public List<Table> tables(Connection connection, String databaseName, String schemaName, String tableName) {
|
||||
String sql = String.format(SELECT_TABLE_SQL, schemaName);
|
||||
if(StringUtils.isNotBlank(tableName)){
|
||||
if (StringUtils.isNotBlank(tableName)) {
|
||||
sql = sql + " and A.TABLE_NAME = '" + tableName + "'";
|
||||
}
|
||||
return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
||||
@ -61,6 +63,7 @@ public class OracleMetaData extends DefaultMetaService implements MetaData {
|
||||
}
|
||||
|
||||
private static String SELECT_TAB_COLS = "SELECT atc.column_id , atc.column_name as COLUMN_NAME, atc.data_type as DATA_TYPE , atc.data_length as DATA_LENGTH , atc.data_type_mod , atc.nullable , atc.data_default , acc.comments , atc.DATA_PRECISION , atc.DATA_SCALE , atc.CHAR_USED FROM all_tab_columns atc, all_col_comments acc WHERE atc.owner = acc.owner AND atc.table_name = acc.table_name AND atc.column_name = acc.column_name AND atc.owner = '%s' AND atc.table_name = '%s' order by atc.column_id";
|
||||
|
||||
@Override
|
||||
public List<TableColumn> columns(Connection connection, String databaseName, String schemaName, String tableName) {
|
||||
String sql = String.format(SELECT_TAB_COLS, schemaName, tableName);
|
||||
@ -75,13 +78,13 @@ public class OracleMetaData extends DefaultMetaService implements MetaData {
|
||||
tableColumn.setColumnSize(resultSet.getInt("DATA_LENGTH"));
|
||||
tableColumn.setDefaultValue(resultSet.getString("DATA_DEFAULT"));
|
||||
tableColumn.setComment(resultSet.getString("COMMENTS"));
|
||||
tableColumn.setNullable("Y".equalsIgnoreCase(resultSet.getString("NULLABLE"))?1:0);
|
||||
tableColumn.setNullable("Y".equalsIgnoreCase(resultSet.getString("NULLABLE")) ? 1 : 0);
|
||||
tableColumn.setOrdinalPosition(resultSet.getInt("COLUMN_ID"));
|
||||
tableColumn.setDecimalDigits(resultSet.getInt("DATA_SCALE"));
|
||||
String charUsed = resultSet.getString("CHAR_USED");
|
||||
if("B".equalsIgnoreCase(charUsed)){
|
||||
if ("B".equalsIgnoreCase(charUsed)) {
|
||||
tableColumn.setUnit("BYTE");
|
||||
}else if("C".equalsIgnoreCase(charUsed)){
|
||||
} else if ("C".equalsIgnoreCase(charUsed)) {
|
||||
tableColumn.setUnit("CHAR");
|
||||
}
|
||||
tableColumns.add(tableColumn);
|
||||
@ -167,10 +170,10 @@ public class OracleMetaData extends DefaultMetaService implements MetaData {
|
||||
index.setType(OracleIndexTypeEnum.NORMAL.getName());
|
||||
} else if ("BITMAP".equalsIgnoreCase(index.getType())) {
|
||||
index.setType(OracleIndexTypeEnum.BITMAP.getName());
|
||||
} else if(StringUtils.isNotBlank(index.getType()) && index.getType().toUpperCase().contains("NORMAL")){
|
||||
} else if (StringUtils.isNotBlank(index.getType()) && index.getType().toUpperCase().contains("NORMAL")) {
|
||||
index.setType(OracleIndexTypeEnum.NORMAL.getName());
|
||||
}
|
||||
if(pkSet.contains(keyName)){
|
||||
if (pkSet.contains(keyName)) {
|
||||
index.setType(OracleIndexTypeEnum.PRIMARY_KEY.getName());
|
||||
}
|
||||
map.put(keyName, index);
|
||||
@ -185,8 +188,8 @@ public class OracleMetaData extends DefaultMetaService implements MetaData {
|
||||
TableIndexColumn tableIndexColumn = new TableIndexColumn();
|
||||
tableIndexColumn.setColumnName(resultSet.getString("Column_name"));
|
||||
String expression = resultSet.getString("COLUMN_EXPRESSION");
|
||||
if(!StringUtils.isBlank(expression)){
|
||||
tableIndexColumn.setColumnName(expression.replace("\"",""));
|
||||
if (!StringUtils.isBlank(expression)) {
|
||||
tableIndexColumn.setColumnName(expression.replace("\"", ""));
|
||||
}
|
||||
tableIndexColumn.setOrdinalPosition(resultSet.getShort("Seq_in_index"));
|
||||
tableIndexColumn.setCollation(resultSet.getString("Collation"));
|
||||
|
@ -47,14 +47,15 @@ public enum OracleIndexTypeEnum {
|
||||
public String buildIndexScript(TableIndex tableIndex) {
|
||||
StringBuilder script = new StringBuilder();
|
||||
if (PRIMARY_KEY.equals(this)) {
|
||||
script.append("CREATE PRIMARY KEY ");
|
||||
} else if (UNIQUE.equals(this)) {
|
||||
script.append("CREATE UNIQUE INDEX ");
|
||||
script.append("ALTER TABLE \"").append(tableIndex.getSchemaName()).append("\".\"").append(tableIndex.getTableName()).append("\" ADD PRIMARY KEY ").append(buildIndexColumn(tableIndex));
|
||||
} else {
|
||||
script.append("CREATE INDEX ");
|
||||
if (UNIQUE.equals(this)) {
|
||||
script.append("CREATE UNIQUE INDEX ");
|
||||
} else {
|
||||
script.append("CREATE INDEX ");
|
||||
}
|
||||
script.append(buildIndexName(tableIndex)).append(" ON \"").append(tableIndex.getSchemaName()).append("\".\"").append(tableIndex.getTableName()).append("\" ").append(buildIndexColumn(tableIndex));
|
||||
}
|
||||
script.append(buildIndexName(tableIndex)).append(" ON \"").append(tableIndex.getSchemaName()).append("\".\"").append(tableIndex.getTableName()).append("\" ").append(buildIndexColumn(tableIndex));
|
||||
|
||||
return script.toString();
|
||||
}
|
||||
|
||||
@ -65,10 +66,10 @@ public enum OracleIndexTypeEnum {
|
||||
for (TableIndexColumn column : tableIndex.getColumnList()) {
|
||||
if (StringUtils.isNotBlank(column.getColumnName())) {
|
||||
script.append("\"").append(column.getColumnName()).append("\"");
|
||||
if(!StringUtils.isBlank(column.getAscOrDesc())){
|
||||
if (!StringUtils.isBlank(column.getAscOrDesc())) {
|
||||
script.append(" ").append(column.getAscOrDesc());
|
||||
}
|
||||
script .append(",");
|
||||
script.append(",");
|
||||
}
|
||||
}
|
||||
script.deleteCharAt(script.length() - 1);
|
||||
@ -85,10 +86,10 @@ public enum OracleIndexTypeEnum {
|
||||
return buildDropIndex(tableIndex);
|
||||
}
|
||||
if (EditStatus.MODIFY.name().equals(tableIndex.getEditStatus())) {
|
||||
return StringUtils.join(buildDropIndex(tableIndex), ";\n" , buildIndexScript(tableIndex));
|
||||
return StringUtils.join(buildDropIndex(tableIndex), ";\n", buildIndexScript(tableIndex));
|
||||
}
|
||||
if (EditStatus.ADD.name().equals(tableIndex.getEditStatus())) {
|
||||
return StringUtils.join( buildIndexScript(tableIndex));
|
||||
return StringUtils.join(buildIndexScript(tableIndex));
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
Reference in New Issue
Block a user