提交 d8653196 authored 作者: taojinlong's avatar taojinlong

feat: sqlserver

上级 41f3b001
......@@ -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;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论