mirror of
https://gitee.com/dromara/dbswitch.git
synced 2025-09-10 22:19:07 +00:00
I5QFVD:支持选择视图表迁移同步
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
package com.gitee.dbswitch.sql.service;
|
||||
|
||||
import java.util.Map;
|
||||
import com.gitee.dbswitch.common.type.DatabaseTypeEnum;
|
||||
import com.gitee.dbswitch.common.type.ProductTypeEnum;
|
||||
|
||||
/**
|
||||
* SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL
|
||||
@@ -34,7 +34,7 @@ public interface ISqlConvertService {
|
||||
* @param sql 待转换的SQL语句
|
||||
* @return 转换为指定数据库类型后的SQL语句
|
||||
*/
|
||||
public String dmlSentence(String sql, DatabaseTypeEnum target);
|
||||
public String dmlSentence(String sql, ProductTypeEnum target);
|
||||
|
||||
/**
|
||||
* 指定源数据库到目的数据库的DQL/DML类SQL的转换
|
||||
@@ -44,7 +44,7 @@ public interface ISqlConvertService {
|
||||
* @param sql 待转换的SQL语句
|
||||
* @return 转换为目的数据库类型后的SQL语句
|
||||
*/
|
||||
public String dmlSentence(DatabaseTypeEnum source, DatabaseTypeEnum target, String sql);
|
||||
public String dmlSentence(ProductTypeEnum source, ProductTypeEnum target, String sql);
|
||||
|
||||
/**
|
||||
* 标准DDL类SQL的转换
|
||||
@@ -60,7 +60,7 @@ public interface ISqlConvertService {
|
||||
* @param sql 待转换的SQL语句
|
||||
* @return 转换为指定数据库类型后的SQL语句
|
||||
*/
|
||||
public String ddlSentence(String sql, DatabaseTypeEnum target);
|
||||
public String ddlSentence(String sql, ProductTypeEnum target);
|
||||
|
||||
/**
|
||||
* 指定源数据库到目的数据库的DDL类SQL的转换
|
||||
@@ -70,7 +70,7 @@ public interface ISqlConvertService {
|
||||
* @param sql 待转换的SQL语句
|
||||
* @return 转换为目的数据库类型后的SQL语句
|
||||
*/
|
||||
public String ddlSentence(DatabaseTypeEnum source, DatabaseTypeEnum target, String sql);
|
||||
public String ddlSentence(ProductTypeEnum source, ProductTypeEnum target, String sql);
|
||||
|
||||
/**
|
||||
* 标准DCL类SQL的转换
|
||||
@@ -88,5 +88,5 @@ public interface ISqlConvertService {
|
||||
* @param sql 待转换的SQL语句
|
||||
* @return 转换为目的数据库类型后的SQL语句
|
||||
*/
|
||||
public String dclSentence(DatabaseTypeEnum source, DatabaseTypeEnum target, String sql);
|
||||
public String dclSentence(ProductTypeEnum source, ProductTypeEnum target, String sql);
|
||||
}
|
||||
|
@@ -23,7 +23,7 @@ import com.gitee.dbswitch.sql.calcite.TheMssqlSqlDialect;
|
||||
import com.gitee.dbswitch.sql.calcite.TheMysqlSqlDialect;
|
||||
import com.gitee.dbswitch.sql.calcite.TheOracleSqlDialect;
|
||||
import com.gitee.dbswitch.sql.calcite.ThePostgresqlSqlDialect;
|
||||
import com.gitee.dbswitch.common.type.DatabaseTypeEnum;
|
||||
import com.gitee.dbswitch.common.type.ProductTypeEnum;
|
||||
import com.gitee.dbswitch.sql.service.ISqlConvertService;
|
||||
|
||||
/**
|
||||
@@ -40,7 +40,7 @@ public class CalciteSqlConvertServiceImpl implements ISqlConvertService {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(CalciteSqlConvertServiceImpl.class);
|
||||
|
||||
private Lex getDatabaseLex(DatabaseTypeEnum type) {
|
||||
private Lex getDatabaseLex(ProductTypeEnum type) {
|
||||
switch (type) {
|
||||
case MYSQL:
|
||||
return Lex.MYSQL;
|
||||
@@ -55,7 +55,7 @@ public class CalciteSqlConvertServiceImpl implements ISqlConvertService {
|
||||
}
|
||||
}
|
||||
|
||||
private SqlDialect getDatabaseDialect(DatabaseTypeEnum type) {
|
||||
private SqlDialect getDatabaseDialect(ProductTypeEnum type) {
|
||||
switch (type) {
|
||||
case MYSQL:
|
||||
return TheMysqlSqlDialect.DEFAULT;
|
||||
@@ -94,7 +94,7 @@ public class CalciteSqlConvertServiceImpl implements ISqlConvertService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String dmlSentence(String sql, DatabaseTypeEnum target) {
|
||||
public String dmlSentence(String sql, ProductTypeEnum target) {
|
||||
logger.info("DML SQL: [{}] {} ", target.name(), sql);
|
||||
SqlParser.Config config = SqlParser.configBuilder().build();
|
||||
SqlParser parser = SqlParser.create(sql, config);
|
||||
@@ -109,7 +109,7 @@ public class CalciteSqlConvertServiceImpl implements ISqlConvertService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String dmlSentence(DatabaseTypeEnum source, DatabaseTypeEnum target, String sql) {
|
||||
public String dmlSentence(ProductTypeEnum source, ProductTypeEnum target, String sql) {
|
||||
logger.info("DML SQL: [{}->{}] {} ", source.name(), target.name(), sql);
|
||||
SqlParser.Config config = SqlParser.configBuilder().setLex(this.getDatabaseLex(source)).build();
|
||||
SqlParser parser = SqlParser.create(sql, config);
|
||||
@@ -149,7 +149,7 @@ public class CalciteSqlConvertServiceImpl implements ISqlConvertService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String ddlSentence(String sql, DatabaseTypeEnum target) {
|
||||
public String ddlSentence(String sql, ProductTypeEnum target) {
|
||||
logger.info("DDL SQL: [{}] {} ", target.name(), sql);
|
||||
SqlParser.Config config = SqlParser.configBuilder()
|
||||
.setParserFactory(SqlDdlParserImpl.FACTORY)
|
||||
@@ -168,7 +168,7 @@ public class CalciteSqlConvertServiceImpl implements ISqlConvertService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String ddlSentence(DatabaseTypeEnum source, DatabaseTypeEnum target, String sql) {
|
||||
public String ddlSentence(ProductTypeEnum source, ProductTypeEnum target, String sql) {
|
||||
logger.info("DDL SQL: [{}->{}] {} ", source.name(), target.name(), sql);
|
||||
SqlParser.Config config = SqlParser.configBuilder()
|
||||
.setParserFactory(SqlDdlParserImpl.FACTORY)
|
||||
@@ -193,7 +193,7 @@ public class CalciteSqlConvertServiceImpl implements ISqlConvertService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String dclSentence(DatabaseTypeEnum source,DatabaseTypeEnum target,String sql) {
|
||||
public String dclSentence(ProductTypeEnum source, ProductTypeEnum target,String sql) {
|
||||
throw new RuntimeException("Unimplement!");
|
||||
}
|
||||
|
||||
|
@@ -11,7 +11,7 @@ package com.gitee.dbswitch.sql.service.impl;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import com.gitee.dbswitch.common.type.DatabaseTypeEnum;
|
||||
import com.gitee.dbswitch.common.type.ProductTypeEnum;
|
||||
import com.gitee.dbswitch.sql.service.ISqlGeneratorService;
|
||||
import com.gitee.dbswitch.sql.ddl.AbstractDatabaseDialect;
|
||||
import com.gitee.dbswitch.sql.ddl.AbstractSqlDdlOperator;
|
||||
@@ -33,16 +33,16 @@ import com.gitee.dbswitch.sql.ddl.sql.impl.PostgresDialectImpl;
|
||||
*/
|
||||
public class MyselfSqlGeneratorServiceImpl implements ISqlGeneratorService {
|
||||
|
||||
private static final Map<DatabaseTypeEnum, String> DATABASE_MAPPER = new HashMap<DatabaseTypeEnum, String>();
|
||||
private static final Map<ProductTypeEnum, String> DATABASE_MAPPER = new HashMap<ProductTypeEnum, String>();
|
||||
|
||||
static {
|
||||
DATABASE_MAPPER.put(DatabaseTypeEnum.MYSQL, MySqlDialectImpl.class.getName());
|
||||
DATABASE_MAPPER.put(DatabaseTypeEnum.ORACLE, OracleDialectImpl.class.getName());
|
||||
DATABASE_MAPPER.put(DatabaseTypeEnum.POSTGRESQL, PostgresDialectImpl.class.getName());
|
||||
DATABASE_MAPPER.put(DatabaseTypeEnum.GREENPLUM, GreenplumDialectImpl.class.getName());
|
||||
DATABASE_MAPPER.put(ProductTypeEnum.MYSQL, MySqlDialectImpl.class.getName());
|
||||
DATABASE_MAPPER.put(ProductTypeEnum.ORACLE, OracleDialectImpl.class.getName());
|
||||
DATABASE_MAPPER.put(ProductTypeEnum.POSTGRESQL, PostgresDialectImpl.class.getName());
|
||||
DATABASE_MAPPER.put(ProductTypeEnum.GREENPLUM, GreenplumDialectImpl.class.getName());
|
||||
}
|
||||
|
||||
public static AbstractDatabaseDialect getDatabaseInstance(DatabaseTypeEnum type) {
|
||||
public static AbstractDatabaseDialect getDatabaseInstance(ProductTypeEnum type) {
|
||||
if (DATABASE_MAPPER.containsKey(type)) {
|
||||
String className = DATABASE_MAPPER.get(type);
|
||||
try {
|
||||
@@ -57,7 +57,7 @@ public class MyselfSqlGeneratorServiceImpl implements ISqlGeneratorService {
|
||||
|
||||
@Override
|
||||
public String createTable(String dbType, TableDefinition t) {
|
||||
DatabaseTypeEnum type = DatabaseTypeEnum.valueOf(dbType.toUpperCase());
|
||||
ProductTypeEnum type = ProductTypeEnum.valueOf(dbType.toUpperCase());
|
||||
AbstractDatabaseDialect dialect = getDatabaseInstance(type);
|
||||
AbstractSqlDdlOperator operator = new DdlSqlCreateTable(t);
|
||||
return operator.toSqlString(dialect);
|
||||
@@ -65,7 +65,7 @@ public class MyselfSqlGeneratorServiceImpl implements ISqlGeneratorService {
|
||||
|
||||
@Override
|
||||
public String alterTable(String dbType, String handle, TableDefinition t){
|
||||
DatabaseTypeEnum type = DatabaseTypeEnum.valueOf(dbType.toUpperCase());
|
||||
ProductTypeEnum type = ProductTypeEnum.valueOf(dbType.toUpperCase());
|
||||
AbstractDatabaseDialect dialect = getDatabaseInstance(type);
|
||||
AbstractSqlDdlOperator operator = new DdlSqlAlterTable(t,handle);
|
||||
return operator.toSqlString(dialect);
|
||||
@@ -73,7 +73,7 @@ public class MyselfSqlGeneratorServiceImpl implements ISqlGeneratorService {
|
||||
|
||||
@Override
|
||||
public String dropTable(String dbType, TableDefinition t) {
|
||||
DatabaseTypeEnum type = DatabaseTypeEnum.valueOf(dbType.toUpperCase());
|
||||
ProductTypeEnum type = ProductTypeEnum.valueOf(dbType.toUpperCase());
|
||||
AbstractDatabaseDialect dialect = getDatabaseInstance(type);
|
||||
AbstractSqlDdlOperator operator = new DdlSqlDropTable(t);
|
||||
return operator.toSqlString(dialect);
|
||||
@@ -81,7 +81,7 @@ public class MyselfSqlGeneratorServiceImpl implements ISqlGeneratorService {
|
||||
|
||||
@Override
|
||||
public String truncateTable(String dbType, TableDefinition t) {
|
||||
DatabaseTypeEnum type = DatabaseTypeEnum.valueOf(dbType.toUpperCase());
|
||||
ProductTypeEnum type = ProductTypeEnum.valueOf(dbType.toUpperCase());
|
||||
AbstractDatabaseDialect dialect = getDatabaseInstance(type);
|
||||
AbstractSqlDdlOperator operator = new DdlSqlTruncateTable(t);
|
||||
return operator.toSqlString(dialect);
|
||||
|
Reference in New Issue
Block a user