在icc-schema.xml jdbcDatatable column
中,有一个tableType
和一个type
属性。
示例:
列名=" first_opened_date" TABLETYPE =" TIMESTAMP"类型=" DATETIME"选定="真"的PrimaryKey ="假"
列名=" prepared_food" TABLETYPE =" BIT"类型=" BOOLEAN"选定="真"的PrimaryKey ="假"
我猜测tableType
是指数据库中定义的数据类型,type
是与java.sql.Types
大致相关的icCube内部标识符。
如果这是正确的,可以从java.sql.Metadata.getColumns.getString("TYPE_NAME")
读取前[tableType],并且必须从java.sql.Metadata.getColumns.getString("DATA_TYPE")
推断出后者[type]。
我的猜测是否正确?你有对应表吗?错误或缺失属性的影响是什么?
答案 0 :(得分:1)
假设我们正在谈论JDBC表。
"的 TABLETYPE 强>"在代码中没有这样使用;它显示为一个指示。 该名称源自元信息返回的 java.sql.Types 整数。
"的类型强>"是列的实际数据类型。从DB读取的值将被转换 到此数据类型,然后用于构建维度和事实。这是显示的类型 在表UI中作为"输出类型"。可能的值有:
DATE
DATETIME
BOOLEAN
DOUBLE
FLOAT
SHORT
INTEGER
LONG
STRING
UPPERCASE_STRING
JAVA_OBJECT
DB_TYPE_UNSUPPORTED
java.sql.Types的映射如下:
DATE from: Types.DATE
DATETIME from: Types.TIMESTAMP
BOOLEAN from: Types.BIT, Types.BOOLEAN
DOUBLE from: Types.FLOAT, Types.DOUBLE, Types.NUMERIC, Types.DECIMAL
FLOAT from: Types.REAL
SHORT from: Types.TINYINT, Types.SMALLINT
INTEGER from: Types.INTEGER
LONG from: Types.BIGINT, Types.ROWID
STRING from: Types.VARCHAR, Types.LONGVARCHAR, Types.NVARCHAR, Types.LONGNVARCHAR, Types.CHAR, Types.NCHAR
UPPERCASE_STRING from: n/a
JAVA_OBJECT from: Types.JAVA_OBJECT
DB_TYPE_UNSUPPORTED from: n/a
希望有所帮助。
答案 1 :(得分:0)
补充@Polizzi的答案,以防万一你反过来需要它:
tableType = JDBCType.valueOf(dbtype).getName(); switch(dbtype){ case Types.DATE: type = "DATE"; break; case Types.TIMESTAMP: type = "DATETIME"; break; case Types.BIT: type = "BOOLEAN"; break; case Types.BOOLEAN: type = "BOOLEAN"; break; case Types.FLOAT: type = "DOUBLE"; break; case Types.DOUBLE: type = "DOUBLE"; break; case Types.NUMERIC: type = "DOUBLE"; break; case Types.DECIMAL: type = "DOUBLE"; break; case Types.REAL: type = "FLOAT"; break; case Types.TINYINT: type = "SHORT"; break; case Types.SMALLINT: type = "SHORT"; break; case Types.INTEGER: type = "INTEGER"; break; case Types.BIGINT: type = "LONG"; break; case Types.ROWID: type = "LONG"; break; case Types.VARCHAR: type = "STRING"; tableType = "VARCHAR("+length+")"; break; case Types.LONGVARCHAR: type = "STRING"; tableType = "LONGVARCHAR("+length+")"; break; case Types.NVARCHAR: type = "STRING"; tableType = "NVARCHAR("+length+")"; break; case Types.LONGNVARCHAR: type = "STRING"; tableType = "LONGVARCHAR("+length+")"; break; case Types.CHAR: type = "STRING"; tableType = "CHAR("+length+")"; break; case Types.NCHAR: type = "STRING"; tableType = "NCHAR("+length+")"; break; case Types.JAVA_OBJECT: type = "JAVA_OBJECT"; break; default: type = "DB_TYPE_UNSUPPORTED"; }