mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-08-02 21:50:43 +08:00
copy and delete Table
This commit is contained in:
@ -96,4 +96,13 @@ public class ClickHouseDBManage extends DefaultDBManage implements DBManage {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void copyTable(Connection connection, String databaseName, String schemaName, String tableName, String newTableName,boolean copyData) throws SQLException {
|
||||
String sql = "CREATE TABLE " + newTableName + " AS " + tableName + "";
|
||||
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
||||
if(copyData){
|
||||
sql = "INSERT INTO " + newTableName + " SELECT * FROM " + tableName;
|
||||
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ public class ClickHouseMetaData extends DefaultMetaService implements MetaData {
|
||||
@Override
|
||||
public String tableDDL(Connection connection, @NotEmpty String databaseName, String schemaName,
|
||||
@NotEmpty String tableName) {
|
||||
String sql = "SHOW CREATE TABLE " + format(databaseName) + "."
|
||||
String sql = "SHOW CREATE TABLE " + format(schemaName) + "."
|
||||
+ format(tableName);
|
||||
return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
||||
if (resultSet.next()) {
|
||||
@ -112,7 +112,7 @@ public class ClickHouseMetaData extends DefaultMetaService implements MetaData {
|
||||
@Override
|
||||
public List<Trigger> triggers(Connection connection, String databaseName, String schemaName) {
|
||||
List<Trigger> triggers = new ArrayList<>();
|
||||
String sql = String.format(TRIGGER_SQL_LIST, databaseName);
|
||||
String sql = String.format(TRIGGER_SQL_LIST, schemaName);
|
||||
return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
||||
while (resultSet.next()) {
|
||||
Trigger trigger = new Trigger();
|
||||
@ -145,7 +145,7 @@ public class ClickHouseMetaData extends DefaultMetaService implements MetaData {
|
||||
@Override
|
||||
public Procedure procedure(Connection connection, @NotEmpty String databaseName, String schemaName,
|
||||
String procedureName) {
|
||||
String sql = String.format(ROUTINES_SQL, "PROCEDURE", databaseName, procedureName);
|
||||
String sql = String.format(ROUTINES_SQL, "PROCEDURE", schemaName, procedureName);
|
||||
return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
||||
Procedure procedure = new Procedure();
|
||||
procedure.setDatabaseName(databaseName);
|
||||
@ -235,7 +235,7 @@ public class ClickHouseMetaData extends DefaultMetaService implements MetaData {
|
||||
@Override
|
||||
public List<TableIndex> indexes(Connection connection, String databaseName, String schemaName, String tableName) {
|
||||
StringBuilder queryBuf = new StringBuilder("SHOW INDEX FROM ");
|
||||
queryBuf.append("`").append(tableName).append("`");
|
||||
queryBuf.append("`").append(schemaName).append("`");
|
||||
queryBuf.append(" FROM ");
|
||||
queryBuf.append("`").append(databaseName).append("`");
|
||||
return SQLExecutor.getInstance().execute(connection, queryBuf.toString(), resultSet -> {
|
||||
@ -298,11 +298,8 @@ public class ClickHouseMetaData extends DefaultMetaService implements MetaData {
|
||||
|
||||
@Override
|
||||
public String getMetaDataName(String... names) {
|
||||
return Arrays.stream(names)
|
||||
.skip(1) // 跳过第一个名称
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.map(name -> "`" + name + "`")
|
||||
.collect(Collectors.joining("."));
|
||||
return Arrays.stream(names).filter(name -> StringUtils.isNotBlank(name)).map(name -> "`" + name + "`").collect(Collectors.joining("."));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -111,4 +111,14 @@ public class DB2DBManage extends DefaultDBManage implements DBManage {
|
||||
String sql = "DROP TABLE " + tableName;
|
||||
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyTable(Connection connection, String databaseName, String schemaName, String tableName, String newTableName,boolean copyData) throws SQLException {
|
||||
String sql = "CREATE TABLE " + newTableName + " LIKE " + tableName + " INCLUDING INDEXES";
|
||||
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
||||
if(copyData){
|
||||
sql = "INSERT INTO " + newTableName + " SELECT * FROM " + tableName;
|
||||
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -28,4 +28,14 @@ public class HiveDBManage extends DefaultDBManage implements DBManage {
|
||||
String sql = "drop table if exists " +tableName;
|
||||
SQLExecutor.getInstance().execute(connection,sql, resultSet -> null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyTable(Connection connection, String databaseName, String schemaName, String tableName, String newTableName,boolean copyData) throws SQLException {
|
||||
String sql = "CREATE TABLE " + newTableName + "LIKE " + tableName;
|
||||
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
||||
if(copyData){
|
||||
sql = "INSERT INTO " + newTableName + " SELECT * FROM " + tableName;
|
||||
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package ai.chat2db.plugin.kingbase;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
|
||||
import ai.chat2db.spi.DBManage;
|
||||
import ai.chat2db.spi.jdbc.DefaultDBManage;
|
||||
@ -64,4 +65,15 @@ public class KingBaseDBManage extends DefaultDBManage implements DBManage {
|
||||
String sql = "drop table if exists " +tableName;
|
||||
SQLExecutor.getInstance().execute(connection,sql, resultSet -> null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyTable(Connection connection, String databaseName, String schemaName, String tableName, String newTableName,boolean copyData) throws SQLException {
|
||||
String sql = "";
|
||||
if(copyData){
|
||||
sql = "CREATE TABLE " + newTableName + " AS TABLE " + tableName + " WITH DATA";
|
||||
}else {
|
||||
sql = "CREATE TABLE " + newTableName + " AS TABLE " + tableName + " WITH NO DATA";
|
||||
}
|
||||
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
||||
}
|
||||
}
|
||||
|
@ -184,4 +184,15 @@ public class OracleDBManage extends DefaultDBManage implements DBManage {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyTable(Connection connection, String databaseName, String schemaName, String tableName, String newTableName,boolean copyData) throws SQLException {
|
||||
String sql = "";
|
||||
if(copyData){
|
||||
sql = "CREATE TABLE " + newTableName + " AS SELECT * FROM " + tableName;
|
||||
}else {
|
||||
sql = "CREATE TABLE " + newTableName + " AS SELECT * FROM " + tableName + " WHERE 1=0";
|
||||
}
|
||||
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -159,4 +159,15 @@ public class PostgreSQLDBManage extends DefaultDBManage implements DBManage {
|
||||
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyTable(Connection connection, String databaseName, String schemaName, String tableName, String newTableName,boolean copyData) throws SQLException {
|
||||
String sql = "";
|
||||
if(copyData){
|
||||
sql = "CREATE TABLE " + newTableName + " AS TABLE " + tableName + " WITH DATA";
|
||||
}else {
|
||||
sql = "CREATE TABLE " + newTableName + " AS TABLE " + tableName + " WITH NO DATA";
|
||||
}
|
||||
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -203,4 +203,15 @@ public class SqlServerDBManage extends DefaultDBManage implements DBManage {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyTable(Connection connection, String databaseName, String schemaName, String tableName, String newTableName,boolean copyData) throws SQLException {
|
||||
String sql = "";
|
||||
if(copyData){
|
||||
sql = "SELECT * INTO " + newTableName + " FROM " + tableName;
|
||||
}else {
|
||||
sql = "SELECT * INTO " + newTableName + " FROM " + tableName + " WHERE 1=0";
|
||||
}
|
||||
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
||||
}
|
||||
}
|
||||
|
@ -140,4 +140,27 @@ public interface DBManage {
|
||||
* @return
|
||||
*/
|
||||
void exportTable(Connection connection, String databaseName, String schemaName,String tableName,AsyncContext asyncContext) throws SQLException;
|
||||
|
||||
|
||||
/**
|
||||
* truncate table
|
||||
* @param connection
|
||||
* @param databaseName
|
||||
* @param schemaName
|
||||
* @param tableName
|
||||
* @throws SQLException
|
||||
*/
|
||||
void truncateTable(Connection connection, String databaseName, String schemaName, String tableName)throws SQLException;
|
||||
|
||||
|
||||
/**
|
||||
* copy table
|
||||
*
|
||||
* @param databaseName
|
||||
* @param schemaName
|
||||
* @param tableName
|
||||
* @param newTableName
|
||||
* @return
|
||||
*/
|
||||
void copyTable(Connection connection, String databaseName, String schemaName, String tableName, String newTableName,boolean copyData) throws SQLException;
|
||||
}
|
@ -179,6 +179,23 @@ public class DefaultDBManage implements DBManage {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void truncateTable(Connection connection, String databaseName, String schemaName, String tableName) throws SQLException {
|
||||
String sql = "TRUNCATE TABLE " + tableName ;
|
||||
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyTable(Connection connection, String databaseName, String schemaName, String tableName, String newTableName,boolean copyData) throws SQLException {
|
||||
String sql = "";
|
||||
if(copyData){
|
||||
sql = "CREATE TABLE " + newTableName + " AS SELECT * FROM " + tableName;
|
||||
}else {
|
||||
sql = "CREATE TABLE " + newTableName + " AS SELECT * FROM " + tableName + " WHERE 1=0";
|
||||
}
|
||||
SQLExecutor.getInstance().execute(connection, sql, resultSet -> null);
|
||||
}
|
||||
|
||||
// public void exportDatabaseData(Connection connection, String databaseName, String schemaName, String tableName, AsyncContext asyncContext) throws SQLException {
|
||||
// exportTableData(connection, databaseName, schemaName, tableName, asyncContext);
|
||||
// }
|
||||
|
Reference in New Issue
Block a user