icCube定义的icc-schema.xml

时间:2016-03-07 17:42:52

标签: iccube

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]。

我的猜测是否正确?你有对应表吗?错误或缺失属性的影响是什么?

2 个答案:

答案 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";
    }