mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-07-31 11:42:41 +08:00
oracle column Type error fix
This commit is contained in:
@ -24,6 +24,7 @@ public class OracleDBManage extends DefaultDBManage implements DBManage {
|
|||||||
"FROM user_col_comments " +
|
"FROM user_col_comments " +
|
||||||
"WHERE table_name = '%s' " +
|
"WHERE table_name = '%s' " +
|
||||||
"AND comments IS NOT NULL";
|
"AND comments IS NOT NULL";
|
||||||
|
|
||||||
public void exportDatabase(Connection connection, String databaseName, String schemaName, AsyncContext asyncContext) throws SQLException {
|
public void exportDatabase(Connection connection, String databaseName, String schemaName, AsyncContext asyncContext) throws SQLException {
|
||||||
exportTables(connection, databaseName, schemaName, asyncContext);
|
exportTables(connection, databaseName, schemaName, asyncContext);
|
||||||
exportViews(connection, asyncContext, schemaName);
|
exportViews(connection, asyncContext, schemaName);
|
||||||
@ -159,11 +160,17 @@ public class OracleDBManage extends DefaultDBManage implements DBManage {
|
|||||||
public void copyTable(Connection connection, String databaseName, String schemaName, String tableName, String newTableName, boolean copyData) throws SQLException {
|
public void copyTable(Connection connection, String databaseName, String schemaName, String tableName, String newTableName, boolean copyData) throws SQLException {
|
||||||
String sql = "";
|
String sql = "";
|
||||||
if (copyData) {
|
if (copyData) {
|
||||||
sql = "CREATE TABLE " + newTableName + " AS SELECT * FROM " + tableName;
|
sql = "CREATE TABLE " + SqlUtils.quoteObjectName(newTableName) + " AS SELECT * FROM " + SqlUtils.quoteObjectName(tableName);
|
||||||
} else {
|
} else {
|
||||||
sql = "CREATE TABLE " + newTableName + " AS SELECT * FROM " + tableName + " WHERE 1=0";
|
sql = "CREATE TABLE " + SqlUtils.quoteObjectName(newTableName) + " AS SELECT * FROM " + SqlUtils.quoteObjectName(tableName) + " WHERE 1=0";
|
||||||
}
|
}
|
||||||
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dropTable(Connection connection, String databaseName, String schemaName, String tableName) {
|
||||||
|
String sql = "DROP TABLE " + SqlUtils.quoteObjectName(tableName);
|
||||||
|
SQLExecutor.getInstance().execute(connection, sql, (resultSet) -> null);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@ import ai.chat2db.spi.util.SortUtils;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
@ -101,9 +102,25 @@ public class OracleMetaData extends DefaultMetaService implements MetaData {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TableColumn> columns(Connection connection, String databaseName, String schemaName, String tableName) {
|
public List<TableColumn> columns(Connection connection, String databaseName, String schemaName, String tableName) {
|
||||||
|
List<TableColumn> tableColumns = super.columns(connection, databaseName, schemaName, tableName);
|
||||||
|
if (CollectionUtils.isNotEmpty(tableColumns)) {
|
||||||
|
Map<String, TableColumn> tableColumnMap = getTableColumns(connection, databaseName, schemaName, tableName);
|
||||||
|
for (TableColumn tableColumn : tableColumns) {
|
||||||
|
TableColumn column = tableColumnMap.get(tableColumn.getName());
|
||||||
|
tableColumn.setUnit(column.getUnit());
|
||||||
|
tableColumn.setComment(column.getComment());
|
||||||
|
tableColumn.setDefaultValue(column.getDefaultValue());
|
||||||
|
tableColumn.setOrdinalPosition(column.getOrdinalPosition());
|
||||||
|
tableColumn.setNullable(column.getNullable());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return tableColumns;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, TableColumn> getTableColumns(Connection connection, String databaseName, String schemaName, String tableName) {
|
||||||
|
Map<String, TableColumn> tableColumns = new HashMap<>();
|
||||||
String sql = String.format(SELECT_TAB_COLS, schemaName, tableName);
|
String sql = String.format(SELECT_TAB_COLS, schemaName, tableName);
|
||||||
return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
||||||
List<TableColumn> tableColumns = new ArrayList<>();
|
|
||||||
while (resultSet.next()) {
|
while (resultSet.next()) {
|
||||||
TableColumn tableColumn = new TableColumn();
|
TableColumn tableColumn = new TableColumn();
|
||||||
tableColumn.setTableName(tableName);
|
tableColumn.setTableName(tableName);
|
||||||
@ -151,10 +168,11 @@ public class OracleMetaData extends DefaultMetaService implements MetaData {
|
|||||||
} else if ("C".equalsIgnoreCase(charUsed)) {
|
} else if ("C".equalsIgnoreCase(charUsed)) {
|
||||||
tableColumn.setUnit("CHAR");
|
tableColumn.setUnit("CHAR");
|
||||||
}
|
}
|
||||||
tableColumns.add(tableColumn);
|
tableColumns.put(tableColumn.getName(), tableColumn);
|
||||||
}
|
}
|
||||||
return tableColumns;
|
return tableColumns;
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String ROUTINES_SQL
|
private static String ROUTINES_SQL
|
||||||
|
@ -241,4 +241,15 @@ public class EasyStringUtils {
|
|||||||
// .replace("\r", "\\r");
|
// .replace("\r", "\\r");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static String sqlEscape(String str) {
|
||||||
|
if (StringUtils.isBlank(str)) {
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
str = str.trim();
|
||||||
|
if (str.endsWith(";")) {
|
||||||
|
str = str.substring(0, str.length() - 1);
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user