feat: sqlserver
This commit is contained in:
parent
41f3b001a7
commit
d86531967f
@ -287,7 +287,7 @@ public class JdbcProvider extends DatasourceProvider {
|
||||
}
|
||||
tableFiled.setRemarks(remarks);
|
||||
tableFiled.setFieldSize(Integer.valueOf(resultSet.getString("COLUMN_SIZE")));
|
||||
String dbType = resultSet.getString("TYPE_NAME");
|
||||
String dbType = resultSet.getString("TYPE_NAME").toUpperCase();
|
||||
tableFiled.setFieldType(dbType);
|
||||
if(dbType.equalsIgnoreCase("LONG")){tableFiled.setFieldSize(65533);}
|
||||
if(StringUtils.isNotEmpty(dbType) && dbType.toLowerCase().contains("date") && tableFiled.getFieldSize() < 50 ){
|
||||
|
||||
@ -14,10 +14,6 @@ import java.util.List;
|
||||
public abstract class QueryProvider {
|
||||
public abstract Integer transFieldType(String field);
|
||||
|
||||
public abstract String createQueryCountSQL(String table);
|
||||
|
||||
public abstract String createQueryCountSQLAsTmp(String sql);
|
||||
|
||||
public abstract String createSQLPreview(String sql, String orderBy);
|
||||
|
||||
public abstract String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup);
|
||||
|
||||
@ -70,16 +70,6 @@ public class DorisQueryProvider extends QueryProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createQueryCountSQL(String table) {
|
||||
return MessageFormat.format("SELECT count(*) FROM {0}", table);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createQueryCountSQLAsTmp(String sql) {
|
||||
return createQueryCountSQL(" (" + sql + ") AS tmp ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createSQLPreview(String sql, String orderBy) {
|
||||
return "SELECT * FROM (" + sql + ") AS tmp ORDER BY " + orderBy + " LIMIT 0,1000";
|
||||
|
||||
@ -70,16 +70,6 @@ public class MysqlQueryProvider extends QueryProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createQueryCountSQL(String table) {
|
||||
return MessageFormat.format("SELECT COUNT(*) FROM {0}", table);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createQueryCountSQLAsTmp(String sql) {
|
||||
return createQueryCountSQL(" (" + sqlFix(sql) + ") AS tmp ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createSQLPreview(String sql, String orderBy) {
|
||||
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp ORDER BY null " + " LIMIT 0,1000";
|
||||
|
||||
@ -82,16 +82,6 @@ public class OracleQueryProvider extends QueryProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createQueryCountSQL(String table) {
|
||||
return MessageFormat.format("SELECT COUNT(*) FROM {0}", table);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createQueryCountSQLAsTmp(String sql) {
|
||||
return createQueryCountSQL(" (" + sqlFix(sql) + ") DE_TMP ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createSQLPreview(String sql, String orderBy) {
|
||||
return "SELECT * FROM (" + sqlFix(sql) + ") DE_TMP " + " WHERE rownum <= 1000";
|
||||
|
||||
@ -2,16 +2,16 @@ package io.dataease.provider.sqlserver;
|
||||
|
||||
import io.dataease.provider.SQLConstants;
|
||||
|
||||
import static io.dataease.datasource.constants.DatasourceTypes.mysql;
|
||||
import static io.dataease.datasource.constants.DatasourceTypes.sqlServer;
|
||||
|
||||
/**
|
||||
* @Author gin
|
||||
* @Date 2021/7/8 7:22 下午
|
||||
*/
|
||||
public class SqlServerSQLConstants extends SQLConstants {
|
||||
public static final String KEYWORD_TABLE = mysql.getKeywordPrefix() + "%s" + mysql.getKeywordSuffix();
|
||||
public static final String KEYWORD_TABLE = sqlServer.getKeywordPrefix() + "%s" + sqlServer.getKeywordSuffix();
|
||||
|
||||
public static final String KEYWORD_FIX = "%s." + mysql.getKeywordPrefix() + "%s" + mysql.getKeywordSuffix();
|
||||
public static final String KEYWORD_FIX = "%s." + sqlServer.getKeywordPrefix() + "%s" + sqlServer.getKeywordSuffix();
|
||||
|
||||
public static final String UNIX_TIMESTAMP = "UNIX_TIMESTAMP(%s)";
|
||||
|
||||
|
||||
@ -29,28 +29,35 @@ public class SqlserverQueryProvider extends QueryProvider {
|
||||
public Integer transFieldType(String field) {
|
||||
switch (field) {
|
||||
case "CHAR":
|
||||
case "NCHAR":
|
||||
case "NTEXT":
|
||||
case "VARCHAR":
|
||||
case "TEXT":
|
||||
case "TINYTEXT":
|
||||
case "MEDIUMTEXT":
|
||||
case "LONGTEXT":
|
||||
case "ENUM":
|
||||
case "XML":
|
||||
return 0;// 文本
|
||||
case "DATE":
|
||||
case "TIME":
|
||||
case "YEAR":
|
||||
case "DATETIME":
|
||||
case "DATETIME2":
|
||||
case "DATETIMEOFFSET":
|
||||
case "TIMESTAMP":
|
||||
return 1;// 时间
|
||||
case "INT":
|
||||
case "SMALLINT":
|
||||
case "MEDIUMINT":
|
||||
case "INTEGER":
|
||||
case "BIGINT":
|
||||
case "SMALLINT":
|
||||
return 2;// 整型
|
||||
case "FLOAT":
|
||||
case "DOUBLE":
|
||||
case "DECIMAL":
|
||||
case "MONEY":
|
||||
case "NUMERIC":
|
||||
return 3;// 浮点
|
||||
case "BIT":
|
||||
case "TINYINT":
|
||||
@ -60,19 +67,14 @@ public class SqlserverQueryProvider extends QueryProvider {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createQueryCountSQL(String table) {
|
||||
return MessageFormat.format("SELECT COUNT(*) FROM {0}", table);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createQueryCountSQLAsTmp(String sql) {
|
||||
return createQueryCountSQL(" (" + sqlFix(sql) + ") AS tmp ");
|
||||
}
|
||||
|
||||
private static Integer DE_STRING = 0;
|
||||
private static Integer DE_TIME = 1;
|
||||
private static Integer DE_INT = 2;
|
||||
private static Integer DE_FLOAT = 3;
|
||||
private static Integer DE_BOOL = 4;
|
||||
@Override
|
||||
public String createSQLPreview(String sql, String orderBy) {
|
||||
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp ORDER BY null " + " LIMIT 0,1000";
|
||||
return "SELECT top 1000 * FROM (" + sqlFix(sql) + ") AS tmp";
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -89,8 +91,8 @@ public class SqlserverQueryProvider extends QueryProvider {
|
||||
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i);
|
||||
String fieldName = "";
|
||||
// 处理横轴字段
|
||||
if (f.getDeExtractType() == 1) {
|
||||
if (f.getDeType() == 2 || f.getDeType() == 3) {
|
||||
if (f.getDeExtractType() == DE_TIME) { // 时间 转为 数值
|
||||
if (f.getDeType() == DE_INT || f.getDeType() == DE_FLOAT) {
|
||||
fieldName = String.format(SqlServerSQLConstants.UNIX_TIMESTAMP, originField) + "*1000";
|
||||
} else {
|
||||
fieldName = originField;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user