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

feat: sqlserver

上级 41f3b001
...@@ -287,7 +287,7 @@ public class JdbcProvider extends DatasourceProvider { ...@@ -287,7 +287,7 @@ public class JdbcProvider extends DatasourceProvider {
} }
tableFiled.setRemarks(remarks); tableFiled.setRemarks(remarks);
tableFiled.setFieldSize(Integer.valueOf(resultSet.getString("COLUMN_SIZE"))); tableFiled.setFieldSize(Integer.valueOf(resultSet.getString("COLUMN_SIZE")));
String dbType = resultSet.getString("TYPE_NAME"); String dbType = resultSet.getString("TYPE_NAME").toUpperCase();
tableFiled.setFieldType(dbType); tableFiled.setFieldType(dbType);
if(dbType.equalsIgnoreCase("LONG")){tableFiled.setFieldSize(65533);} if(dbType.equalsIgnoreCase("LONG")){tableFiled.setFieldSize(65533);}
if(StringUtils.isNotEmpty(dbType) && dbType.toLowerCase().contains("date") && tableFiled.getFieldSize() < 50 ){ if(StringUtils.isNotEmpty(dbType) && dbType.toLowerCase().contains("date") && tableFiled.getFieldSize() < 50 ){
......
...@@ -14,10 +14,6 @@ import java.util.List; ...@@ -14,10 +14,6 @@ import java.util.List;
public abstract class QueryProvider { public abstract class QueryProvider {
public abstract Integer transFieldType(String field); 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 createSQLPreview(String sql, String orderBy);
public abstract String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup); public abstract String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup);
......
...@@ -70,16 +70,6 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -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 @Override
public String createSQLPreview(String sql, String orderBy) { public String createSQLPreview(String sql, String orderBy) {
return "SELECT * FROM (" + sql + ") AS tmp ORDER BY " + orderBy + " LIMIT 0,1000"; return "SELECT * FROM (" + sql + ") AS tmp ORDER BY " + orderBy + " LIMIT 0,1000";
......
...@@ -70,16 +70,6 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -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 @Override
public String createSQLPreview(String sql, String orderBy) { public String createSQLPreview(String sql, String orderBy) {
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp ORDER BY null " + " LIMIT 0,1000"; return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp ORDER BY null " + " LIMIT 0,1000";
......
...@@ -82,16 +82,6 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -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 @Override
public String createSQLPreview(String sql, String orderBy) { public String createSQLPreview(String sql, String orderBy) {
return "SELECT * FROM (" + sqlFix(sql) + ") DE_TMP " + " WHERE rownum <= 1000"; return "SELECT * FROM (" + sqlFix(sql) + ") DE_TMP " + " WHERE rownum <= 1000";
......
...@@ -2,16 +2,16 @@ package io.dataease.provider.sqlserver; ...@@ -2,16 +2,16 @@ package io.dataease.provider.sqlserver;
import io.dataease.provider.SQLConstants; import io.dataease.provider.SQLConstants;
import static io.dataease.datasource.constants.DatasourceTypes.mysql; import static io.dataease.datasource.constants.DatasourceTypes.sqlServer;
/** /**
* @Author gin * @Author gin
* @Date 2021/7/8 7:22 下午 * @Date 2021/7/8 7:22 下午
*/ */
public class SqlServerSQLConstants extends SQLConstants { 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)"; public static final String UNIX_TIMESTAMP = "UNIX_TIMESTAMP(%s)";
......
...@@ -29,28 +29,35 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -29,28 +29,35 @@ public class SqlserverQueryProvider extends QueryProvider {
public Integer transFieldType(String field) { public Integer transFieldType(String field) {
switch (field) { switch (field) {
case "CHAR": case "CHAR":
case "NCHAR":
case "NTEXT":
case "VARCHAR": case "VARCHAR":
case "TEXT": case "TEXT":
case "TINYTEXT": case "TINYTEXT":
case "MEDIUMTEXT": case "MEDIUMTEXT":
case "LONGTEXT": case "LONGTEXT":
case "ENUM": case "ENUM":
case "XML":
return 0;// 文本 return 0;// 文本
case "DATE": case "DATE":
case "TIME": case "TIME":
case "YEAR": case "YEAR":
case "DATETIME": case "DATETIME":
case "DATETIME2":
case "DATETIMEOFFSET":
case "TIMESTAMP": case "TIMESTAMP":
return 1;// 时间 return 1;// 时间
case "INT": case "INT":
case "SMALLINT":
case "MEDIUMINT": case "MEDIUMINT":
case "INTEGER": case "INTEGER":
case "BIGINT": case "BIGINT":
case "SMALLINT":
return 2;// 整型 return 2;// 整型
case "FLOAT": case "FLOAT":
case "DOUBLE": case "DOUBLE":
case "DECIMAL": case "DECIMAL":
case "MONEY":
case "NUMERIC":
return 3;// 浮点 return 3;// 浮点
case "BIT": case "BIT":
case "TINYINT": case "TINYINT":
...@@ -60,19 +67,14 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -60,19 +67,14 @@ public class SqlserverQueryProvider extends QueryProvider {
} }
} }
@Override private static Integer DE_STRING = 0;
public String createQueryCountSQL(String table) { private static Integer DE_TIME = 1;
return MessageFormat.format("SELECT COUNT(*) FROM {0}", table); private static Integer DE_INT = 2;
} private static Integer DE_FLOAT = 3;
private static Integer DE_BOOL = 4;
@Override
public String createQueryCountSQLAsTmp(String sql) {
return createQueryCountSQL(" (" + sqlFix(sql) + ") AS tmp ");
}
@Override @Override
public String createSQLPreview(String sql, String orderBy) { 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 @Override
...@@ -89,8 +91,8 @@ public class SqlserverQueryProvider extends QueryProvider { ...@@ -89,8 +91,8 @@ public class SqlserverQueryProvider extends QueryProvider {
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i); String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i);
String fieldName = ""; String fieldName = "";
// 处理横轴字段 // 处理横轴字段
if (f.getDeExtractType() == 1) { if (f.getDeExtractType() == DE_TIME) { // 时间 转为 数值
if (f.getDeType() == 2 || f.getDeType() == 3) { if (f.getDeType() == DE_INT || f.getDeType() == DE_FLOAT) {
fieldName = String.format(SqlServerSQLConstants.UNIX_TIMESTAMP, originField) + "*1000"; fieldName = String.format(SqlServerSQLConstants.UNIX_TIMESTAMP, originField) + "*1000";
} else { } else {
fieldName = originField; fieldName = originField;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论