2013-06-03 8 views
45

मैं समर्थित प्रकारों पर दस्तावेज़ ढूंढने का प्रयास करता हूं जिसका उपयोग लॉग लॉग फ़ाइलों में किया जा सकता है। लेकिन इसे नहीं मिला। क्या कोई दस्तावेज़, साइट या कुछ ऐसा है जहां मैं सभी प्रकार के विशिष्ट मुद्दों को पा सकता हूं। उदाहरण के लिए क्लोब प्रकार विभिन्न प्रकार के डेटाबेस में समर्थित है।सभी तरल पदार्थ एसक्यूएल प्रकारों की सूची

<property name="clob.type" value="clob" dbms="oracle,h2,hsqldb"/> 
<property name="clob.type" value="longtext" dbms="mysql"/> 
<column name="clob1" type="${clob.type}"> 
    <constraints nullable="true"/> 
</column> 

मुझे आशा है कि एक संसाधन है, जहां सभी liquibase प्रकार बताए गए है: और मैं की तरह कुछ का उपयोग करने के लिए है।

उत्तर

44

मुझे liquibase.database.typeconversion.core.AbstractTypeConverter कक्षा मिली है।

protected DataType getDataType(String columnTypeString, Boolean autoIncrement, String dataTypeName, String precision, String additionalInformation) { 
    // Translate type to database-specific type, if possible 
    DataType returnTypeName = null; 
    if (dataTypeName.equalsIgnoreCase("BIGINT")) { 
     returnTypeName = getBigIntType(); 
    } else if (dataTypeName.equalsIgnoreCase("NUMBER") || dataTypeName.equalsIgnoreCase("NUMERIC")) { 
     returnTypeName = getNumberType(); 
    } else if (dataTypeName.equalsIgnoreCase("BLOB")) { 
     returnTypeName = getBlobType(); 
    } else if (dataTypeName.equalsIgnoreCase("BOOLEAN")) { 
     returnTypeName = getBooleanType(); 
    } else if (dataTypeName.equalsIgnoreCase("CHAR")) { 
     returnTypeName = getCharType(); 
    } else if (dataTypeName.equalsIgnoreCase("CLOB")) { 
     returnTypeName = getClobType(); 
    } else if (dataTypeName.equalsIgnoreCase("CURRENCY")) { 
     returnTypeName = getCurrencyType(); 
    } else if (dataTypeName.equalsIgnoreCase("DATE") || dataTypeName.equalsIgnoreCase(getDateType().getDataTypeName())) { 
     returnTypeName = getDateType(); 
    } else if (dataTypeName.equalsIgnoreCase("DATETIME") || dataTypeName.equalsIgnoreCase(getDateTimeType().getDataTypeName())) { 
     returnTypeName = getDateTimeType(); 
    } else if (dataTypeName.equalsIgnoreCase("DOUBLE")) { 
     returnTypeName = getDoubleType(); 
    } else if (dataTypeName.equalsIgnoreCase("FLOAT")) { 
     returnTypeName = getFloatType(); 
    } else if (dataTypeName.equalsIgnoreCase("INT")) { 
     returnTypeName = getIntType(); 
    } else if (dataTypeName.equalsIgnoreCase("INTEGER")) { 
     returnTypeName = getIntType(); 
    } else if (dataTypeName.equalsIgnoreCase("LONGBLOB")) { 
     returnTypeName = getLongBlobType(); 
    } else if (dataTypeName.equalsIgnoreCase("LONGVARBINARY")) { 
     returnTypeName = getBlobType(); 
    } else if (dataTypeName.equalsIgnoreCase("LONGVARCHAR")) { 
     returnTypeName = getClobType(); 
    } else if (dataTypeName.equalsIgnoreCase("SMALLINT")) { 
     returnTypeName = getSmallIntType(); 
    } else if (dataTypeName.equalsIgnoreCase("TEXT")) { 
     returnTypeName = getClobType(); 
    } else if (dataTypeName.equalsIgnoreCase("TIME") || dataTypeName.equalsIgnoreCase(getTimeType().getDataTypeName())) { 
     returnTypeName = getTimeType(); 
    } else if (dataTypeName.toUpperCase().contains("TIMESTAMP")) { 
     returnTypeName = getDateTimeType(); 
    } else if (dataTypeName.equalsIgnoreCase("TINYINT")) { 
     returnTypeName = getTinyIntType(); 
    } else if (dataTypeName.equalsIgnoreCase("UUID")) { 
     returnTypeName = getUUIDType(); 
    } else if (dataTypeName.equalsIgnoreCase("VARCHAR")) { 
     returnTypeName = getVarcharType(); 
    } else if (dataTypeName.equalsIgnoreCase("NVARCHAR")) { 
     returnTypeName = getNVarcharType(); 
    } else { 
     return new CustomType(columnTypeString,0,2); 
    } 
+0

चीजें अब एक जटिल हैं और अधिक जटिल हैं - https://github.com/liquibase/liquibase/blob/master/liquibase-core/src/main/java/liquibase/datatype/core/NumberType.java अब दिखाता है कि "संख्या" परिवर्तित हो गया है, और वह @DataTypeInfo (नाम = "संख्या", aliases = {"numeric", "java.sql.Types.NUMERIC"}, .... समग्र सब कुछ एक सामान्य LiquibaseDataType है, एक .toDatabaseDataType() फ़ंक्शन के साथ , और उपनामों की एक प्रकार प्रदान की गई सूची –

2

ठीक है, चूंकि तरल पदार्थ खुला स्रोत है, इसलिए हमेशा source code है जिसे आप चेक कर सकते हैं।

कुछ डेटा प्रकार वर्गों में एक विधि toDatabaseDataType() प्रतीत होती है जो आपको एक विशिष्ट डेटा बेस पर किस प्रकार के काम (उपयोग किया जाता है) के बारे में जानकारी देनी चाहिए।

+0

लिक्विबेस 3. * प्रकारों के लिए उपरोक्त लिंक देखें नाम से निर्देशिका निर्देशिका में सूचीबद्ध। (विशेष रूप से, डेसिमल मौजूद है)। – brentiumbrent

102

यह सब liquibase डेटाटाइप्स की एक व्यापक सूची है और कैसे वे विभिन्न डेटाबेस के लिए बदल रहे हैं: यह सभी प्रकार है कि इस्तेमाल किया जा सकता को सूचीबद्ध

boolean 
MySQLDatabase: BIT(1) 
SQLiteDatabase: BOOLEAN 
H2Database: BOOLEAN 
PostgresDatabase: BOOLEAN 
UnsupportedDatabase: BOOLEAN 
DB2Database: SMALLINT 
MSSQLDatabase: [bit] 
OracleDatabase: NUMBER(1) 
HsqlDatabase: BOOLEAN 
FirebirdDatabase: SMALLINT 
DerbyDatabase: SMALLINT 
InformixDatabase: BOOLEAN 
SybaseDatabase: BIT 
SybaseASADatabase: BIT 

tinyint 
MySQLDatabase: TINYINT 
SQLiteDatabase: TINYINT 
H2Database: TINYINT 
PostgresDatabase: SMALLINT 
UnsupportedDatabase: TINYINT 
DB2Database: SMALLINT 
MSSQLDatabase: [tinyint] 
OracleDatabase: NUMBER(3) 
HsqlDatabase: TINYINT 
FirebirdDatabase: SMALLINT 
DerbyDatabase: SMALLINT 
InformixDatabase: TINYINT 
SybaseDatabase: TINYINT 
SybaseASADatabase: TINYINT 

int 
MySQLDatabase: INT 
SQLiteDatabase: INTEGER 
H2Database: INT 
PostgresDatabase: INT 
UnsupportedDatabase: INT 
DB2Database: INTEGER 
MSSQLDatabase: [int] 
OracleDatabase: INTEGER 
HsqlDatabase: INT 
FirebirdDatabase: INT 
DerbyDatabase: INTEGER 
InformixDatabase: INT 
SybaseDatabase: INT 
SybaseASADatabase: INT 

mediumint 
MySQLDatabase: MEDIUMINT 
SQLiteDatabase: MEDIUMINT 
H2Database: MEDIUMINT 
PostgresDatabase: MEDIUMINT 
UnsupportedDatabase: MEDIUMINT 
DB2Database: MEDIUMINT 
MSSQLDatabase: [int] 
OracleDatabase: MEDIUMINT 
HsqlDatabase: MEDIUMINT 
FirebirdDatabase: MEDIUMINT 
DerbyDatabase: MEDIUMINT 
InformixDatabase: MEDIUMINT 
SybaseDatabase: MEDIUMINT 
SybaseASADatabase: MEDIUMINT 

bigint 
MySQLDatabase: BIGINT 
SQLiteDatabase: BIGINT 
H2Database: BIGINT 
PostgresDatabase: BIGINT 
UnsupportedDatabase: BIGINT 
DB2Database: BIGINT 
MSSQLDatabase: [bigint] 
OracleDatabase: NUMBER(38, 0) 
HsqlDatabase: BIGINT 
FirebirdDatabase: BIGINT 
DerbyDatabase: BIGINT 
InformixDatabase: INT8 
SybaseDatabase: BIGINT 
SybaseASADatabase: BIGINT 

float 
MySQLDatabase: FLOAT 
SQLiteDatabase: FLOAT 
H2Database: FLOAT 
PostgresDatabase: FLOAT 
UnsupportedDatabase: FLOAT 
DB2Database: FLOAT 
MSSQLDatabase: [float](53) 
OracleDatabase: FLOAT 
HsqlDatabase: FLOAT 
FirebirdDatabase: FLOAT 
DerbyDatabase: FLOAT 
InformixDatabase: FLOAT 
SybaseDatabase: FLOAT 
SybaseASADatabase: FLOAT 

double 
MySQLDatabase: DOUBLE 
SQLiteDatabase: DOUBLE 
H2Database: DOUBLE 
PostgresDatabase: DOUBLE PRECISION 
UnsupportedDatabase: DOUBLE 
DB2Database: DOUBLE 
MSSQLDatabase: [float](53) 
OracleDatabase: FLOAT(24) 
HsqlDatabase: DOUBLE 
FirebirdDatabase: DOUBLE PRECISION 
DerbyDatabase: DOUBLE 
InformixDatabase: DOUBLE PRECISION 
SybaseDatabase: DOUBLE 
SybaseASADatabase: DOUBLE 

decimal 
MySQLDatabase: DECIMAL 
SQLiteDatabase: DECIMAL 
H2Database: DECIMAL 
PostgresDatabase: DECIMAL 
UnsupportedDatabase: DECIMAL 
DB2Database: DECIMAL 
MSSQLDatabase: [decimal](18, 0) 
OracleDatabase: DECIMAL 
HsqlDatabase: DECIMAL 
FirebirdDatabase: DECIMAL 
DerbyDatabase: DECIMAL 
InformixDatabase: DECIMAL 
SybaseDatabase: DECIMAL 
SybaseASADatabase: DECIMAL 

number 
MySQLDatabase: numeric 
SQLiteDatabase: NUMBER 
H2Database: NUMBER 
PostgresDatabase: numeric 
UnsupportedDatabase: NUMBER 
DB2Database: numeric 
MSSQLDatabase: [numeric](18, 0) 
OracleDatabase: NUMBER 
HsqlDatabase: numeric 
FirebirdDatabase: numeric 
DerbyDatabase: numeric 
InformixDatabase: numeric 
SybaseDatabase: numeric 
SybaseASADatabase: numeric 

blob 
MySQLDatabase: LONGBLOB 
SQLiteDatabase: BLOB 
H2Database: BLOB 
PostgresDatabase: BYTEA 
UnsupportedDatabase: BLOB 
DB2Database: BLOB 
MSSQLDatabase: [varbinary](MAX) 
OracleDatabase: BLOB 
HsqlDatabase: BLOB 
FirebirdDatabase: BLOB 
DerbyDatabase: BLOB 
InformixDatabase: BLOB 
SybaseDatabase: IMAGE 
SybaseASADatabase: LONG BINARY 

function 
MySQLDatabase: FUNCTION 
SQLiteDatabase: FUNCTION 
H2Database: FUNCTION 
PostgresDatabase: FUNCTION 
UnsupportedDatabase: FUNCTION 
DB2Database: FUNCTION 
MSSQLDatabase: [function] 
OracleDatabase: FUNCTION 
HsqlDatabase: FUNCTION 
FirebirdDatabase: FUNCTION 
DerbyDatabase: FUNCTION 
InformixDatabase: FUNCTION 
SybaseDatabase: FUNCTION 
SybaseASADatabase: FUNCTION 

UNKNOWN 
MySQLDatabase: UNKNOWN 
SQLiteDatabase: UNKNOWN 
H2Database: UNKNOWN 
PostgresDatabase: UNKNOWN 
UnsupportedDatabase: UNKNOWN 
DB2Database: UNKNOWN 
MSSQLDatabase: [UNKNOWN] 
OracleDatabase: UNKNOWN 
HsqlDatabase: UNKNOWN 
FirebirdDatabase: UNKNOWN 
DerbyDatabase: UNKNOWN 
InformixDatabase: UNKNOWN 
SybaseDatabase: UNKNOWN 
SybaseASADatabase: UNKNOWN 

datetime 
MySQLDatabase: datetime 
SQLiteDatabase: TEXT 
H2Database: TIMESTAMP 
PostgresDatabase: TIMESTAMP WITHOUT TIME ZONE 
UnsupportedDatabase: datetime 
DB2Database: TIMESTAMP 
MSSQLDatabase: [datetime] 
OracleDatabase: TIMESTAMP 
HsqlDatabase: TIMESTAMP 
FirebirdDatabase: TIMESTAMP 
DerbyDatabase: TIMESTAMP 
InformixDatabase: DATETIME YEAR TO FRACTION(5) 
SybaseDatabase: datetime 
SybaseASADatabase: datetime 

time 
MySQLDatabase: time 
SQLiteDatabase: time 
H2Database: time 
PostgresDatabase: TIME WITHOUT TIME ZONE 
UnsupportedDatabase: time 
DB2Database: time 
MSSQLDatabase: [time](7) 
OracleDatabase: DATE 
HsqlDatabase: time 
FirebirdDatabase: time 
DerbyDatabase: time 
InformixDatabase: INTERVAL HOUR TO FRACTION(5) 
SybaseDatabase: time 
SybaseASADatabase: time 

timestamp 
MySQLDatabase: timestamp 
SQLiteDatabase: TEXT 
H2Database: TIMESTAMP 
PostgresDatabase: TIMESTAMP WITHOUT TIME ZONE 
UnsupportedDatabase: timestamp 
DB2Database: timestamp 
MSSQLDatabase: [datetime] 
OracleDatabase: TIMESTAMP 
HsqlDatabase: TIMESTAMP 
FirebirdDatabase: TIMESTAMP 
DerbyDatabase: TIMESTAMP 
InformixDatabase: DATETIME YEAR TO FRACTION(5) 
SybaseDatabase: datetime 
SybaseASADatabase: timestamp 

date 
MySQLDatabase: date 
SQLiteDatabase: date 
H2Database: date 
PostgresDatabase: date 
UnsupportedDatabase: date 
DB2Database: date 
MSSQLDatabase: [date] 
OracleDatabase: date 
HsqlDatabase: date 
FirebirdDatabase: date 
DerbyDatabase: date 
InformixDatabase: date 
SybaseDatabase: date 
SybaseASADatabase: date 

char 
MySQLDatabase: CHAR 
SQLiteDatabase: CHAR 
H2Database: CHAR 
PostgresDatabase: CHAR 
UnsupportedDatabase: CHAR 
DB2Database: CHAR 
MSSQLDatabase: [char](1) 
OracleDatabase: CHAR 
HsqlDatabase: CHAR 
FirebirdDatabase: CHAR 
DerbyDatabase: CHAR 
InformixDatabase: CHAR 
SybaseDatabase: CHAR 
SybaseASADatabase: CHAR 

varchar 
MySQLDatabase: VARCHAR 
SQLiteDatabase: VARCHAR 
H2Database: VARCHAR 
PostgresDatabase: VARCHAR 
UnsupportedDatabase: VARCHAR 
DB2Database: VARCHAR 
MSSQLDatabase: [varchar](1) 
OracleDatabase: VARCHAR2 
HsqlDatabase: VARCHAR 
FirebirdDatabase: VARCHAR 
DerbyDatabase: VARCHAR 
InformixDatabase: VARCHAR 
SybaseDatabase: VARCHAR 
SybaseASADatabase: VARCHAR 

nchar 
MySQLDatabase: NCHAR 
SQLiteDatabase: NCHAR 
H2Database: NCHAR 
PostgresDatabase: NCHAR 
UnsupportedDatabase: NCHAR 
DB2Database: NCHAR 
MSSQLDatabase: [nchar](1) 
OracleDatabase: NCHAR 
HsqlDatabase: CHAR 
FirebirdDatabase: NCHAR 
DerbyDatabase: NCHAR 
InformixDatabase: NCHAR 
SybaseDatabase: NCHAR 
SybaseASADatabase: NCHAR 

nvarchar 
MySQLDatabase: NVARCHAR 
SQLiteDatabase: NVARCHAR 
H2Database: NVARCHAR 
PostgresDatabase: VARCHAR 
UnsupportedDatabase: NVARCHAR 
DB2Database: NVARCHAR 
MSSQLDatabase: [nvarchar](1) 
OracleDatabase: NVARCHAR2 
HsqlDatabase: VARCHAR 
FirebirdDatabase: NVARCHAR 
DerbyDatabase: VARCHAR 
InformixDatabase: NVARCHAR 
SybaseDatabase: NVARCHAR 
SybaseASADatabase: NVARCHAR 

clob 
MySQLDatabase: LONGTEXT 
SQLiteDatabase: TEXT 
H2Database: CLOB 
PostgresDatabase: TEXT 
UnsupportedDatabase: CLOB 
DB2Database: CLOB 
MSSQLDatabase: [varchar](MAX) 
OracleDatabase: CLOB 
HsqlDatabase: CLOB 
FirebirdDatabase: BLOB SUB_TYPE TEXT 
DerbyDatabase: CLOB 
InformixDatabase: CLOB 
SybaseDatabase: TEXT 
SybaseASADatabase: LONG VARCHAR 

currency 
MySQLDatabase: DECIMAL 
SQLiteDatabase: REAL 
H2Database: DECIMAL 
PostgresDatabase: DECIMAL 
UnsupportedDatabase: DECIMAL 
DB2Database: DECIMAL(19, 4) 
MSSQLDatabase: [money] 
OracleDatabase: NUMBER(15, 2) 
HsqlDatabase: DECIMAL 
FirebirdDatabase: DECIMAL(18, 4) 
DerbyDatabase: DECIMAL 
InformixDatabase: MONEY 
SybaseDatabase: MONEY 
SybaseASADatabase: MONEY 

uuid 
MySQLDatabase: char(36) 
SQLiteDatabase: TEXT 
H2Database: UUID 
PostgresDatabase: UUID 
UnsupportedDatabase: char(36) 
DB2Database: char(36) 
MSSQLDatabase: [uniqueidentifier] 
OracleDatabase: RAW(16) 
HsqlDatabase: char(36) 
FirebirdDatabase: char(36) 
DerbyDatabase: char(36) 
InformixDatabase: char(36) 
SybaseDatabase: UNIQUEIDENTIFIER 
SybaseASADatabase: UNIQUEIDENTIFIER 

के लिए, इस ग्रूवी स्क्रिप्ट है मैंने इस आउटपुट को उत्पन्न करने के लिए उपयोग किया है:

@Grab('org.liquibase:liquibase-core:3.5.1') 

import liquibase.database.core.* 
import liquibase.datatype.core.* 

def datatypes = [BooleanType,TinyIntType,IntType,MediumIntType,BigIntType,FloatType,DoubleType,DecimalType,NumberType,BlobType,DatabaseFunctionType,UnknownType,DateTimeType,TimeType,TimestampType,DateType,CharType,VarcharType,NCharType,NVarcharType,ClobType,CurrencyType,UUIDType] 
def databases = [MySQLDatabase, SQLiteDatabase, H2Database, PostgresDatabase, UnsupportedDatabase, DB2Database, MSSQLDatabase, OracleDatabase, HsqlDatabase, FirebirdDatabase, DerbyDatabase, InformixDatabase, SybaseDatabase, SybaseASADatabase] 
datatypes.each { 
    def datatype = it.newInstance() 
    datatype.finishInitialization("") 
    println datatype.name 
    databases.each { println "$it.simpleName: ${datatype.toDatabaseDataType(it.newInstance())}"} 
    println '' 
} 
+0

सूची उत्पन्न करने के लिए स्क्रिप्ट बहुत उपयोगी थी! – osundblad

+0

सावधान रहें! PostgreSQL में, ** फ्लोट ** ** डबल परिशुद्धता ** (उर्फ ** फ्लोट 8 **) –

+0

और बदतर: कॉलम PostgreSQL के लिए डेटा प्रकार "असली" गलत तरीके से "डबल परिशुद्धता" में अनुवाद किया गया है, https://liquibase.jira.com/browse/CORE-2807 देखें –

संबंधित मुद्दे