Unverified Commit 0e2b9c92 authored by 金鑫's avatar 金鑫 Committed by GitHub

Sqlserver fix 完善字段查询、字段类型判断功能 (#1021)

* Update cdcsource_statements.md

cdcsource增加支持多目标库同步功能。

* sqlserver优化字段属性类型解析.
sqlserver字段sql查询语句优化增加获取字段长度.

* sqlserver优化字段属性类型解析.
sqlserver字段sql查询语句优化增加获取字段长度.
Co-authored-by: 's avatar金鑫 <jinyanhui@huansi.net>
parent f4a87be0
...@@ -38,7 +38,8 @@ public interface SqlServerConstant { ...@@ -38,7 +38,8 @@ public interface SqlServerConstant {
+ " AND syscolumns.id = object_id (a.name) AND sysobjects.xtype = 'PK' AND sysobjects.parent_obj = syscolumns.id " + " AND syscolumns.id = object_id (a.name) AND sysobjects.xtype = 'PK' AND sysobjects.parent_obj = syscolumns.id "
+ " AND sysindexes.id = syscolumns.id AND sysobjects.name = sysindexes.name AND sysindexkeys.id = syscolumns.id AND sysindexkeys.indid = sysindexes.indid " + " AND sysindexes.id = syscolumns.id AND sysobjects.name = sysindexes.name AND sysindexkeys.id = syscolumns.id AND sysindexkeys.indid = sysindexes.indid "
+ "AND syscolumns.colid = sysindexkeys.colid " + "AND syscolumns.colid = sysindexkeys.colid "
+ " AND syscolumns.name = b.name) as 'KEY', b.is_identity isIdentity , '' as CHARACTER_SET_NAME, '' as COLLATION_NAME, 0 as ORDINAL_POSITION, 0 as NUMERIC_PRECISION, 0 as NUMERIC_SCALE, " + " AND syscolumns.name = b.name) as 'KEY', b.is_identity isIdentity , '' as CHARACTER_SET_NAME, '' as COLLATION_NAME, "
+ "0 as ORDINAL_POSITION, b.PRECISION as NUMERIC_PRECISION, b.scale as NUMERIC_SCALE,"
+ "'' as AUTO_INCREMENT " + "'' as AUTO_INCREMENT "
+ "FROM ( select name,object_id from sys.tables UNION all select name,object_id from sys.views ) a INNER JOIN sys.columns b " + "FROM ( select name,object_id from sys.tables UNION all select name,object_id from sys.views ) a INNER JOIN sys.columns b "
+ " ON b.object_id = a.object_id LEFT JOIN sys.types ON b.user_type_id = sys.types.user_type_id LEFT JOIN sys.extended_properties c ON c.major_id = b.object_id " + " ON b.object_id = a.object_id LEFT JOIN sys.types ON b.user_type_id = sys.types.user_type_id LEFT JOIN sys.extended_properties c ON c.major_id = b.object_id "
......
...@@ -60,8 +60,7 @@ public class SqlServerTypeConvert implements ITypeConvert { ...@@ -60,8 +60,7 @@ public class SqlServerTypeConvert implements ITypeConvert {
} else { } else {
columnType = ColumnType.DOUBLE; columnType = ColumnType.DOUBLE;
} }
} else if (t.contains("decimal") || t.contains("money") || t.contains("smallmoney") } else if (t.contains("decimal") || t.contains("money") || t.contains("smallmoney") || t.contains("numeric")) {
|| t.contains("numeric")) {
columnType = ColumnType.DECIMAL; columnType = ColumnType.DECIMAL;
} else if (t.contains("real")) { } else if (t.contains("real")) {
if (isNullable) { if (isNullable) {
...@@ -69,10 +68,18 @@ public class SqlServerTypeConvert implements ITypeConvert { ...@@ -69,10 +68,18 @@ public class SqlServerTypeConvert implements ITypeConvert {
} else { } else {
columnType = ColumnType.FLOAT; columnType = ColumnType.FLOAT;
} }
} else if (t.contains("date")) { } else if (t.equalsIgnoreCase("datetime") || t.equalsIgnoreCase("smalldatetime")) {
columnType = ColumnType.DATE;
} else if (t.contains("smalldatetime") || t.contains("datetime")) {
columnType = ColumnType.TIMESTAMP; columnType = ColumnType.TIMESTAMP;
} else if (t.equalsIgnoreCase("datetime2")) {
//这里应该是纳秒
columnType = ColumnType.TIMESTAMP;
} else if (t.equalsIgnoreCase("datetimeoffset")) {
//这里应该是纳秒
columnType = ColumnType.TIMESTAMP;
} else if (t.equalsIgnoreCase("date")) {
columnType = ColumnType.LOCALDATE;
} else if (t.equalsIgnoreCase("time")) {
columnType = ColumnType.LOCALTIME;
} else if (t.contains("timestamp") || t.contains("binary") || t.contains("varbinary") || t.contains("image")) { } else if (t.contains("timestamp") || t.contains("binary") || t.contains("varbinary") || t.contains("image")) {
columnType = ColumnType.BYTES; columnType = ColumnType.BYTES;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment