Skip to content

Appendix C: Data Type Mapping#

Migration Center’s policy for mapping data types between heterogeneous databases is to minimize the loss of data. However, the user may wish to customize the way that data is mapped, even if it incurs the loss or corruption of data. To satisfy this requirement, Migration Center also allows the user to edit the data type mapping table.

This chapter explains how to check and customize the default data type mapping table during the project progress of the Migration Center. It also explains the precautions that users need to know in the Migration Center's default data type mapping table.

Manipulating Data Type Mapping#

The user can change the data type mapping table in the reconcile stage as shown below.

1.Reconcile

Right-click in the project tree window and select the Reconcile menu. Or select Reconcile from the Migration menu. You must complete the Build step before you can perform this step.

2. Data Type Mapping

Reconcile menu is clicked, the Reconcile window appears as shown below. In this window, users can view the default data type mapping table of Migration Center and change the data type of the target database in "1. Data Type Mapping". Select the data type you want to change and click the Change button at the bottom right.

3. Change Mapping Type

Change button is clicked, the following window appears. In the "Change Mapping Type" window, select the data type to change in the Destination DB Data Type. Depending on the data type, enter Precision and Scale if necessary, and click the OK button.

Default Data Type Mapping Tables#

These tables describe the basic data type mapping tables between heterogeneous databases and precautions that users should be aware of.

Since Migration Center 7.11, if a table's column length of a source database exceeds the maximum range of the data type mapped to the target database, the data type of the target database can be automatically converted to a data type with a larger range than the default mapping table. For instance, the following data types can be changed to CLOB if necessary in order to minimize data loss.

  • VARCHAR or VARCHAR2, LVARCHAR, TT_VARCHAR

Oracle to Altibase#

Source Destination Notice
1 CHAR CHAR CHAR type columns defined with character length in Oracle are automatically converted to CHAR type columns with byte length in Altibase, because in Altibase, CHAR type columns can be defined only with byte length.
2 NCHAR NCHAR The explicit sizes of the source and destination NCHAR columns are the same, e.g. NCHAR(10) -> NCHAR(10).
However, in the Oracle JDBC driver, the size of a national character column is defined as the number of bytes used, whereas in the Altibase JDBC driver, the size of a national character column is defined as the number of characters that are stored. Please note that this means that the resultant column in Altibase will be two or three times as large as necessary.
3 VARCHAR2 VARCHAR VARCHAR2 defined as character length in Oracle is converted into bytes in Altibase. Altibase's VARCHAR can be defined only in bytes.
4 NVARCHAR2 NVARCHAR The column sizes differ, for the same reason as NCHAR.
5 LONG CLOB
6 NUMBER NUMBER NUMBER type columns defined without precision and scale in Oracle are converted to the same NUMBER type columns without precision and scale for Altibase. *Both Oracle and Altibase internally handle NUMBER type columns defined without precision and scale as FLOAT type in the database.
7 FLOAT FLOAT
8 BINARY FLOAT FLOAT
9 BINARY DOUBLE VARCHAR(310) There is no compatible data type in Altibase for the Oracle binary double type, so the data is stored in character form to prevent loss.
10 DATE DATE
11 TIMESTAMP DATE A small amount of data loss may occur due to the difference in scale.
In Oracle, the scale of a timestamp value is nanoseconds (9 digits), whereas in Altibase, the scale of a timestamp value is microseconds (6 digits)
12 RAW BLOB
13 LONG RAW BLOB
14 BLOB BLOB
15 CLOB CLOB
16 NCLOB NVARCHAR(10666) There is no compatible data type in Altibase for the Oracle NCLOB, so the data is stored in NVARCHAR with the maximum precision. This may cause data loss during data migration when the actual data precision exceeds the NVARCHAR maximum size.
17 ROWID VARCHAR(18) Oracle's ROWID converts to a character data type. Altibase does not support the data type ROWID.

Microsoft SQL Server to Altibase#

Source Destination Notice
1 BIGINT BIGINT
2 DECIMAL NUMERIC
3 INT INTEGER
4 NUMERIC NUMERIC
5 SMALLINT SMALLINT
6 MONEY FLOAT
7 TINYINT SMALLINT
8 SMALLINTMONEY FLOAT
9 BIT CHAR(1)
10 FLOAT VARCHAR(310) There is no compatible data type in Altibase for Microsoft SQL FLOAT type, so VARCHAR(310) is mapped to prevent data loss.
11 REAL FLOAT
12 DATE DATE
13 DATETIME2 DATE A fraction of time can be loss due to difference in scale. Scale of DATETIME2 type of Microsoft SQL Server is hundreds of nanoseconds (7 digits), whereas the scale of DATE type of Altibase is only microseconds(6 digits).
14 DATETIME DATE
15 SMALLDATETIME DATE
16 CHAR CHAR
17 TEXT CLOB
18 VARCHAR VARCHAR
19 VARCHAR (MAX) CLOB
20 NVARCHAR NVARCHAR
21 NVARCHAR (MAX) NVARCHAR (10666) There is no compatible data type in Altibase for SQL Server NTEXT type, NVARCHAR is used with maximum precision. It may cause data loss during data migration when actual data precision exceeds maximum NVARCHAR size.
22 BINARY BYTE
23 IMAGE BLOB
24 VARBINARY BLOB
25 ALLIDENTITY NUMERIC(38, 0)
26 UNIQUEIDENTIFIER VARCHAR(40) There is no compatible data type in Altibase for SQL Server UNIQUEIDENTIFIER type, so VARCHAR type is used to prevent any data loss.
27 SYSNAME NVARCHAR (128)

MySQL to Altibase#

Source Destination Notice
1 TINYINT SMALLINT
2 TINYINT UNSIGNED SMALLINT
3 SMALLINT INTEGER
4 SMALLINT UNSIGNED INTEGER
5 MEDIUMINT INTEGER
6 MEDIUMINT UNSIGNED INTEGER
7 INT (INTEGER) INTEGER Please note that the minimum value of Altibase INT type (-2,147,483,647) is greater than the minimum value of MySQL INT type (- 2,147,483,648).
8 INT UNSIGNED BIGINT
9 BIGINT BIGINT Please note that the minimum value of Altibase BIGINTINT type (-9,223,372,036,854,775,807) is greater than the minimum value of MySQL BIGINT type (-9,223,372,036,854,775,808).
10 BIGINT UNSIGNED NUMERIC(20,0) There is no compatible data type in Altibase for MySQL BIGINT UNSIGNED type, so NUMERIC type is used to prevent any data loss.
11 DECIMAL (NUMERIC) VARCHAR(70) There is no compatible data type in Altibase for MySQL DECIMAL type, so VARCHAR type is used to prevent any data loss.
12 FLOAT FLOAT
13 DOUBLE VARCHAR(310) There is no compatible data type in Altibase for MySQL DOUBLE type, so VARCHAR type is used to prevent any data loss.
14 BIT VARBIT
15 DATETIME DATE Time parts are set to ‘0'
16 DATE DATE
17 TIMESTAMP DATE Except TIMEZONE
18 CHAR CHAR
19 VARCHAR VARCHAR If the MySQL's VARCHAR legnth exceeds 32,000 bytes, the maximum size of Altibase's VARCHAR, it is converted to Altibase's CLOB data type. This is to prevent data loss that may occur during migration due to the maximum size difference between MySQL and Altibase data types. MySQL's maximum value for VARCHAR is 65,536 bytes, larger than Altibase.
20 CHAR with National Character The data type of Altibase varies depending on the character set of MySQL and Altibase.
CHAR 1. If the character set of MySQL and Altibase is the same Unicode, it is converted to CHAR.
2. Even when MySQL's character set is not Unicode, it is converted to CHAR.
NCHAR If the character set of MySQL is Unicode and the character set of Altibase is not Unicode, it is converted to NCHAR.
21 VARCHAR with National Character The data type of Altibase varies depending on the character set of MySQL and Altibase.
VARCHAR 1. If the character set of MySQL and Altibase is the same Unicode, it is converted to VARCHAR.
2. Even when MySQL's character set is not Unicode, it is converted to VARCHAR.
NVARCHAR If the character set of MySQL is Unicode and the character set of Altibase is not Unicode, it is converted to NVARCHAR.
22 BINARY BYTE
23 VARBINARY BLOB
24 TINYBLOB BLOB
25 MEDIUMBLOB BLOB
26 BLOB BLOB
27 LONGBLOB BLOB
28 TINYTEXT VARCHAR(255)
29 TEXT CLOB
30 MEDIUMTEXT CLOB
31 LONGTEXT CLOB
32 ENUM VARCHAR(10666) There is no compatible data type in Altibase for MySQL ENUM type, so VARCHAR is used to prevent data loss.
33 SET VARCHAR(10666) There is no compatible data type in Altibase for MySQL SET type, so VARCHAR is used to prevent data loss.

Informix 11.5 to Altibase#

Source Destination Notice
1 BIGINT BIGINT
2 INT8 BIGINT
3 INT INTEGER
4 SMALLINT SMALLINT
5 BIGSERIAL BIGINT
6 SERIAL8 BIGINT
7 SERIAL INTEGER
8 FLOAT DOUBLE
9 REAL REAL
10 SMALLFLOAT REAL
11 MONEY NUMERIC
12 DECIMAL_FLOAT FLOAT
13 DATE DATE
14 DATETIME DATE
15 BOOLEAN CHAR(1)
16 CHAR CHAR If Informix's CHAR legnth exceeds 32,000 bytes, the maximum size of Altibase's CHAR, it is converted to Altibase's data type to CLOB. This is to prevent data loss that may occur during migration due to the maximum size difference between Informix and Altibase data types. Informix's maximum value for CHAR is 32,767 bytes, larger than Altibase.
17 NCHAR NCHAR The user should note that data loss can occur due to the maximum precision of NCHAR data type at Informix (32,767) being greater than that of Altibase (32,000).
18 VARCHAR VARCHAR
19 NVARCHAR NVARCHAR
20 LVARCHAR VARCHAR If Informix's LVARCHAR legnth exceeds 32,000 bytes, the maximum size of Altibase's VARCHAR, it is converted to Altibase's data type to CLOB. This is to prevent data loss that may occur during migration due to the maximum size difference between Informix and Altibase data types. Informix's maximum value for LVARCHAR is 32,767 bytes, larger than Altibase.
21 TEXT CLOB
22 CLOB CLOB
23 BYTE BLOB
24 BLOB BLOB
25 INTERVAL FLOAT

TimesTen to Altibase#

Source Destination Notice
1 BINARY BLOB
2 BINARY_DOUBLE VARCHAR(310)
3 BINARY_FLOAT FLOAT
4 BLOB BLOB
5 CHAR CHAR CHAR type columns defined with character length in TimesTen are automatically converted to CHAR type columns with byte length in Altibase, because in Altibase, CHAR type columns can be defined only with byte length.
6 CLOB CLOB
7 DATE DATE
8 NCHAR NCHAR
9 NCLOB NVARCHAR(10666)
10 NUMBER NUMBER
11 NVARCHAR2 NVARCHAR The maximum size of VARCHAR2 of TimesTen is 2,097,152 bytes, which is greater than the maximum VARCHAR size of Altibase, which is 32,000; thus, the potential data loss can be occurred.
12 ROWID VARCHAR(18)
13 TIME DATE
14 TIMESTAMP DATE The maximum TIMESTAMP scale of TimesTen takes nanoseconds (9digits), which is greater than the maximum DATE scale microseconds (6digits) of Altibase; thus, the potential data loss can be occurred.
15 TT_BIGINT BIGINT The minimum size of TT_BIGINT in TimesTen is -9,223,372,036,854,775,808 which is smaller than the minimum BIGINT size of Altibase, which is 9,223,372,036,854,775,807; thus, the potential data loss can be occurred.
16 TT_CHAR CHAR
17 TT_DATE DATE
18 TT_DECIMAL NUMBER The maximum TT_DECIMAL of TimesTen is precision(40) greater than the maximum precision size(38) of NUMBER in Altibase; thus, the potential data loss can be occurred.
19 TT_INTEGER INTEGER The minimum TT_INTEGER size of TimesTen is -2,147,483,648, which is smaller than the minimum INTEGER size of Altibase, which is -2,147,483,647; thus, the potential data loss can be occurred.
20 TT_NCHAR NCHAR
21 TT_NVARCHAR NVARCHAR The maximum TT_NVARCHAR size (2,097,152 bytes) of TimesTen is greater than that of the Altibase(32,000 bytes); thus, the potential data loss can be occurred.
22 TT_SMALLINT SMALLINT The potential data loss can be occurred since the minimum TT_SMALLINT size (-32,768) of TimesTen is smaller than the minimum SMALLINT size(-32,767) of Altibase.
23 TT_TIMESTAMP DATE The maximum scale of TT_TIMESTAMP in TimesTen is nanoseconds (7 digits), which is greater than the maximum scale of DATE in Altibase that is microseconds (6 digits); thus, the potential data loss can be occurred.
24 TT_TINYINT SMALLINT
25 TT_VARCHAR VARCHAR If TimesTen's TT_VARCHAR legnth exceeds 32,000 bytes, the maximum size of Altibase's VARCHAR, it is converted to Altibase's data type to CLOB. This is to prevent data loss that may occur during migration due to the maximum size difference between TimesTen and Altibase data types. TimesTen's maximum value for TT_VARCHAR is 4,194,304bytes, larger than Altibase.
26 VARBINARY BLOB
27 VARCHAR2 VARCHAR 1. If TimesTen's VARCHAR2 legnth exceeds 32,000 bytes, the maximum size of Altibase's VARCHAR, it is converted to Altibase's data type to CLOB. This is to prevent data loss that may occur during migration due to the maximum size difference between TimesTen and Altibase data types. TimesTen's maximum value for VARCHAR2 is 4,194,304bytes, larger than Altibase.
2. VARCHAR2 defined as character length in TimesTen is converted into bytes in Altibase. Altibase's VARCHAR can be defined only in bytes.

CUBRID to Altibase#

Source Destination Notice
1 SHORT SMALLINT The minimum SHORT value of CURBID is - 32,768, which is smaller than the minimum value(-32,767) of SMALLINT in Altibase; thus the potential data loss can be occurred.
2 INTEGER INTEGER The minimum value of CUBRID( - 2,147,483,648) is smaller than that of the Altibase( -2,147,483,647); thus the potential data loss can be occurred.
3 BIGINT BIGINT The minimum value of CUBRID(- 9,223,372,036,854,775,808) is smaller than that of the Altibase ( -9,223,372,036,854,775,807);thus the potential data loss can be occurred.
4 NUMERIC NUMERIC
5 FLOAT REAL
6 DOUBLE DOUBLE
7 MONETARY DOUBLE
8 DATE DATE
9 TIME DATE
10 TIMESTAMP DATE
11 DATETIME DATE
12 CHAR CHAR If CUBRID's CHAR legnth exceeds 32,000 bytes, the maximum size of Altibase's CHAR, it is converted to Altibase's data type to CLOB. This is to prevent data loss that may occur during migration due to the maximum size difference between CUBRID and Altibase data types. CUBRID's maximum value for CHAR is 1,073,741,823 bytes, larger than Altibase.
13 VARCHAR VARCHAR If CUBRID's VARCHAR legnth exceeds 32,000 bytes, the maximum size of Altibase's VARCHAR, it is converted to Altibase's data type to CLOB. This is to prevent data loss that may occur during migration due to the maximum size difference between CUBRID and Altibase data types. CUBRID's maximum value for VARCHAR is 1,073,741,823 bytes, larger than Altibase.
14 NCHAR NCHAR Since the maximum size of NCHAR type in CUBRID is 1,073,741,823 bytes, which is greater than that of the Altibase( 16,000bytes), potential data loss can be occurred.
15 VARCHAR NVARCHAR The maximum size of VARCHAR type in CUBRID is 1,073,741,823 bytes and it is greater than the maximum NVARCHAR type of Altibase,which is 16,000 bytes; thus, potential data loss can be occured.
16 STRING VARCHAR The potential data loss can be occured since the maximum VARCHAR size of CUBRID is greater than that of Altiabse, which is 32,000 bytes with the identical data type.
17 BIT BLOB
18 VARBIT BLOB
19 BLOB BLOB
20 CLOB CLOB
21 ENUM VARCHAR(3200) This is the data which is not supported by Altibase. The constants of enumeration character sting in CUBRID implement migration through arbitrarily converting them into VARCHAR type of Altibase.
22 COLLECTION VARCHAR(3200) This is the data type that Altibase does not support. The COLLECTION data type of CUBRID is converted as the VARCHAR data type of Altibase and the value of the former is also converted as string for the later during migrating.

Altibase to Oracle#

Source Destination Notice
1 CHAR CHAR If Altibase's CHAR legnth exceeds 2,000 bytes, the maximum size of Oracle's CHAR, it is converted to Oracle's data type to CLOB. This is to prevent data loss that may occur during migration due to the maximum size difference between Altibase and Oracle. Altibase's CHAR maximum size is 32,000 bytes, which is larger than Oracle.
2 NCHAR NCHAR The potential data loss can be occurred since the maximum size of Altibase NCHAR is 32000 bytes and the maximum size of of Oracle NCHAR is 2000 bytes.
3 VARCHAR VARCHAR2 If Altibase's VARCHAR legnth exceeds 4,000 bytes, the maximum size of Oracle's VARCHAR2, it is converted to Oracle's data type to CLOB. This is to prevent data loss that may occur during migration due to the maximum size difference between Altibase and Oracle. Altibase's VARCHAR maximum size is 32,000 bytes, which is larger than Oracle.
4 NVARCHAR NVARCHAR2 The potential data loss can be occurred since the maximum size of Altibase NVARCHAR is 32000 bytes and the maximum size of of Oracle NVARCHAR is 4000 bytes or characters.
5 SMALLINT NUMBER
6 INTEGER NUMBER
7 BIGINT NUMBER
8 REAL BINARY_FLOAT
9 DOUBLE BINARY_DOUBLE
10 FLOAT FLOAT
11 NUMERIC NUMBER
12 DATE TIMESTAMP
13 BIT CHAR The potential data loss can be occurred since the maximum size of CHAR is 2000 bytes, and the maximum size of BIT is 64000 bits, that is, 8000 bytes.
14 VARBIT VARCHAR2 The potential data loss can be occurred since the maximum size of VARCHAR2 is 4000 bytes, and the maximum size of VARBIT is 64000 bits, that is, 8000 bytes.
15 BYTE RAW The potential data loss can be occurred since the maximum size of BYTE is 32000 bytes, and the maximum size of RAW is 2000 bytes.
16 VARBYTE RAW The potential data loss can be occurred since the maximum size of VARBYTE is 32000 bytes, and the maximum size of RAW is 2000 bytes.
17 NIBBLE RAW
18 BLOB BLOB
19 CLOB CLOB

Tibero to Altibase#

Source Destination Notice
1 CHAR CHAR Since Altibase's CHAR type can be defined only in byte length, in case of a column defined as character length in Tibero, it is automatically converted to byte length.
2 NCHAR NCHAR
3 VARCHAR VARCHAR Altibase's VARCHAR type can be defined only in byte length, so in case of a column defined as character length in Tibero, it is automatically converted to byte length.
4 NVARCHAR NVARCHAR
5 LONG CLOB
6 NUMBER NUMERIC NUMBER type columns defined without precision and scale in Tibero are converted to the same NUMBER type columns without precision and scale for Altibase. *Both Tibero and Altibase internally handle NUMBER type columns defined without precision and scale as FLOAT type in the database.
7 BINARY FLOAT FLOAT
8 BINARY DOUBLE VARCHAR(310) There is no compatible data type in Altibase for the Tibero binary double type, so the data is stored in character form to prevent loss.
9 DATE DATE
10 TIME DATE
11 TIMESTAMP DATE A small amount of data loss may occur due to the difference in scale. In Tibero, the scale of a timestamp value is nanoseconds (9 digits), whereas in Altibase, the scale of a timestamp value is microseconds (6 digits).
12 RAW BLOB
13 LONG RAW BLOB
14 BLOB BLOB
15 CLOB CLOB
16 NCLOB NVARCHAR(10666) There is no compatible data type in Altibase for the Tibero NCLOB, so the data is stored in NVARCHAR with the maximum precision. This may cause data loss during data migration when the actual data precision exceeds the NVARCHAR maximum size.
17 ROWID VARCHAR(18) Tibero's ROWID converts to a character data type. Altibase does not support the data type ROWID.

Automatic Correction of Character Column Length Considering Heterogeneous Character Set#

When the character sets of the source and destination databases are different during migration, character data types (CHAR, VARCHAR) require length conversion. For example, if the source database is set to the MS949 character set that requires a maximum of 2 bytes per character storage, and the target database is set to the UTF8 character set that requires 3 bytes per character, the character data of the target database is required to migrate without truncation. The size of the type should be 1.5 times the original.

Migration Center automatically performs this length conversion, and the length correction formula for character data types is as follows.

Dest. Size = Ceil(Correction Factor * Src. Size)
Correction Factor = Dest. MaxBytes / Src. MaxBytes
* MaxBytes = The maximum number of bytes required to store one character

However, if MaxBytes of the original is 1 or the correction factor is less than 1, the length conversion is not performed.

The MaxBytes and correction factors of the source and target databases can be found on the summary page of the build report.

Precautions#

For large tables, the length of data storage in the target database can be much larger than the original due to length correction. If there is a guarantee that the data will not be truncated without converting the length, the length can be manually specified in the reconcile step.

Support Character Set for Each Database#

For character sets not listed in the table below, Migration Center does not perform length correction.

Altibase#
Character Set Max. Bytes Per Character
KO16KSC5601 2
MS949 2
BIG5 2
GB231280 2
MS936 2
UTF8 3
SHIFTJIS 2
MS932 2
EUCJP 3
Cubrid#
Character Set Max. Bytes Per Character
utf8 3
euckr 2
Informix#
Character Set Max. Bytes Per Character
zh_cn.GB18030_2000 4
zh_tw.big5 2
zh_tw.euctw 4
zh_cn.gb 2
zh_tw.sbig5 2
zh_tw.ccdc 2
ja_jp.sjis-s 2
ja_jp.ujis 3
ja_up.sjis 2
ko_kr.cp949 2
ko_kr.ksc 2
MySQL#

See the result set of the query below.

SELECT CHARACTER_SET_NAME,MAXLEN FROM INFORMATION_SCHEMA.CHARACTER_SETS;
SQL Server#
Code Page Max. Bytes Per Character
932 2
936 2
949 2
950 2
Oracle#
Character Set Max. Bytes Per Character
AL32UTF8 4
JA16EUC 3
JA16EUCTILDE 3
JA16SJIS 2
JA16SJISTILDE 2
KO16MSWIN949 2
UTF8 3
ZHS16GBK 2
ZHT16HKSCS 2
ZHT16MSWIN950 2
ZHT32EUC 4
Tibero#
Character Set Max. Bytes Per Character
UTF8 3
EUCKR 2
MSWIN949 2
SJIS 2
JA16SJIS 2
JA16SJISTILDE 2
JA16EUC 3
JA16EUCTILDE 3
GBK 2
ZHT16HKSCS 2
TimesTen#
Character Set Max. Bytes Per Character
AL16UTF16 4
AL32UTF8 4
JA16EUC 3
JA16EUCTILDE 3
JA16SJIS 2
JA16SJISTILDE 2
KO16KSC5601 2
KO16MSWIN949 2
ZHS16CGB231280 2
ZHS16GBK 2
ZHS32GB18030 4
ZHT16BIG5 2
ZHT16HKSCS 2
ZHT16MSWIN950 2
ZHT32EUC 4