icCube определение файла icc-schema.xml

В icc-schema.xml jdbcDatatable column есть атрибут tableType и type.

Пример:

имя столбца = first_opened_date tableType = тип TIMESTAMP = DATETIME selected = true primaryKey = false

имя столбца = prepared_food tableType = тип BIT = BOOLEAN selected = true primaryKey = false

Я предположил, что tableType относится к типу данных, определенному в базе данных, а type — это внутренний идентификатор icCube, приблизительно связанный с java.sql.Types.

Если это правильно, прежний [tableType] может быть прочитан из java.sql.Metadata.getColumns.getString("TYPE_NAME"), а более поздний [type] должен быть выведен из java.sql.Metadata.getColumns.getString("DATA_TYPE").

Верна ли моя догадка? У вас есть таблица соответствий? Каково влияние неправильных или отсутствующих атрибутов?


person AlainD    schedule 07.03.2016    source источник


Ответы (2)


Предполагая, что мы говорим о таблицах JDBC.

"tableType" не используется как таковой в коде; это отображается как индикация. Имя получено из целого числа java.sql.Types, возвращаемого метаинформацией.

"type" — фактический тип данных столбца. Значения, прочитанные из БД, преобразуются в этот тип данных, а затем используются для построения измерений и фактов. Это тип, отображаемый в пользовательском интерфейсе таблицы как «Тип вывода». Возможные значения:

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

Надеюсь, это поможет.

person Marc Polizzi    schedule 08.03.2016

В дополнение к ответу @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";
    }
person AlainD    schedule 08.03.2016