抽出処理で抽出側DBから抽出された更新データのデータ型は,抽出側Datareplicator Extensionによって反映側DBに反映できるデータ型に変換され,抽出情報キューファイルに格納されます。
このとき,抽出側DBから抽出されたデータは,まずHiRDBデータ型に変換されます。そして,HiRDBデータ型から反映側DBに合ったデータ型に変換されて,抽出情報キューファイルに格納されるという流れになります。
図4-1 データ型の変換
Datareplicator Extensionが対応している抽出側DBMSと反映側DBMSの組み合わせを次の表に示します。
表4-1 Datareplicator Extensionが対応している抽出側DBMSと反映側DBMSの組み合わせ
抽出側DB | 反映側DB | ||
---|---|---|---|
HiRDB(UNIX,Windows) | Oracle(UNIX,Windows※2) | SQL Server(Windows) | |
HiRDB(UNIX,Windows) | ○※1 | ○ | ○ |
Oracle(UNIX,Windows) | ○ | × | × |
SQL Server(Windows) | ○ | × | × |
以降では,各DBMSのデータ型とHiRDBデータ型との対応について説明します。抽出側DBで使用するデータ型が反映側でどのデータ型に変換されるかは,「(1)抽出側DBのデータ型の対応」及び「(2)反映側DBのデータ型の対応」を比較して調べてください。
ここでは,抽出側DBのデータ型とHiRDBデータ型との対応について説明します。
Oracleからデータを抽出した場合,HiRDBデータ型には次の表のように変換されます。
抽出対象外のデータを抽出対象として抽出定義に指定した場合は,抽出定義プリプロセスファイルの作成処理でエラーとなります。
表4-2 Oracleから抽出するデータのデータ型対応
Oracleデータ型 | 対応するHiRDBデータ型 | |
---|---|---|
データ属性 | データの長さ | |
VARCHAR2(n) | 1≦n≦4000 | MVARCHAR(n) |
NVARCHAR2(n) | 1≦n≦4000 | NVARCHAR(n) |
NUMBER(p,s) | 1≦p≦38 -84≦s≦127 | SMALLINT,INTEGER,DECIMAL,又はFLOAT※1 |
LONG | - | 抽出対象外 |
ROWID | - | 抽出対象外 |
DATE | 固定長の日付+時間データ。 | DATE,TIME,又はCHAR(19)※2 |
RAW(n) | 1≦n≦2000 | BLOB(n) |
LONG RAW | - | 抽出対象外 |
CHAR(n) | 1≦n≦2000 | MCHAR(n),DATE,又はTIME※2 |
NCHAR(n) | 1≦n≦2000 | NCHAR(n) |
CLOB | - | 抽出対象外 |
NCLOB | - | 抽出対象外 |
BLOB | - | 抽出対象外 |
BFILE | - | 抽出対象外 |
UROWID | - | 抽出対象外 |
ユーザ定義型 | - | 抽出対象外 |
指定分類 | Oracleのデータ | decimal_max_precisionオペランド指定値 | 条件 | HiRDBデータ型 |
---|---|---|---|---|
精度及び位取りの指定なし | NUMBER REAL DOUBLE PRECISION | - | なし | FLOAT |
INTEGER SMALLINT DECIMAL NUMERIC | - | なし | INTEGER | |
精度だけ指定 | NUMBER(p) DECIMAL(p) NUMERIC(p) | m≧p | p≦4 | SMALLINT |
5≦p≦9 | INTEGER | |||
10≦p≦m | [LARGE] DECIMAL(p) | |||
m<p | - | FLOAT | ||
FLOAT(p) | - | - | FLOAT | |
精度及び位取りを指定 | NUMBER(p,s) DECIMAL(p,s) NUMERIC(p,s) | m≧p | p≧m+1, s≧m+1, 又はp-s≧m+1 | FLOAT |
p<s かつp<m+1 かつs<m+1 かつp-s<m+1 | [LARGE] DECIMAL(s,s) | |||
s<0 かつp<m+1 かつp-s<m+1 | [LARGE] DECIMAL(p-s,0) | |||
上記以外 | [LARGE] DECIMAL(p,s) | |||
m<p | - | FLOAT |
SQL Serverからデータを抽出した場合,HiRDBデータ型には次の表のように変換されます。
抽出対象外のデータを抽出対象として抽出定義に指定した場合は,抽出定義プリプロセスファイルの作成処理でエラーとなります。
表4-3 SQL Serverから抽出するデータのデータ型対応
SQL Serverデータ型 | 対応するHiRDBデータ型 | |
---|---|---|
データ属性 | データの長さ | |
BIGINT | - | LARGE DECIMAL(19,0) p=19,s=0 |
INT | - | INTEGER |
SMALLINT | - | SMALLINT |
TINYINT | - | SMALLINT |
BIT | - | CHAR(1) |
DECIMAL(p,s) | 0<p<m 0≦s≦p |
|
NUMERIC(p,s) | ||
MONEY | - | LARGE DECIMAL(19,4) |
SMALLMONEY | - | DECIMAL(10,4) |
FLOAT | - | FLOAT |
REAL | - | SMALLFLT |
DATETIME | - | DATE,TIME,又はCHAR(19)※1 |
SMALLDATETIME | ||
CHAR(n) | - | CHAR(n)※1 |
VARCHAR(n) | - | VARCHAR(n) |
TEXT | - | 抽出対象外 |
NCHAR(n) | -※2 | NCHAR(n) |
NVARCHAR(n) | -※2 | NVARCHAR(n) |
NTEXT | - | 抽出対象外 |
BINARY | - | BLOB,又はVARCHAR※1※3 |
VARBINARY | ||
IMAGE | - | 抽出対象外 |
SQL_VARIANT | - | VARCHAR(8000) |
TIMESTAMP | - | 抽出対象外 |
UNIQUEIDENTIFIER | ||
ユーザ定義データ型(ADT) | - | ベースデータ型マッピングに従います。 |
ここでは,反映側DBのデータ型とHiRDBデータ型との対応について説明します。
UNIX版Oracleのデータ型には,DB内部のデータ形式を表す内部データ型と,AP内のデータ形式を表す外部データ型があります。外部データ型は,内部データ型より種類が多く,OracleはAP内の外部データ型のデータを内部データ型の列へ変換する多種のデータ変換パターンを持っています。
Datareplicator Extensionは,HiRDBから抽出したデータをOracleの外部データ型へデータ変換してOracleのデータベースへ反映します。このため,反映対象表の作成時には,外部データ型から変換できる内部データ型を使用してください。
HiRDBからOracleへデータ連動する場合の,抽出対象表と反映対象表のデータ型の対応を次の表に示します。
表4-4 Oracleに反映するデータのデータ型対応
HiRDBデータ型 | 対応するOracle データ型 | |
---|---|---|
データ属性 | データの長さ | |
INTEGER | データ長については,マニュアル「HiRDB Version 9 SQLリファレンス」を参照してください。 | INTEGER(4) |
SMALLINT | INTEGER(2) | |
DECIMAL※1 | CHAR | |
FLOAT | FLOAT(8) | |
SMALLFLT | ||
CHAR※7 | 1≦n≦255 | CHAR(n) |
MCHAR | ||
NCHAR | 1≦n≦127 | CHAR(2n) |
CHAR※2※7 | n≧256 | LONG(n) |
MCHAR※2 | ||
NCHAR※2 | n≧128 | LONG(2n) |
VARCHAR※3※7 | 1≦n≦4000 | VARCHAR2(n) |
MVARCHAR※3 | ||
NVARCHAR※3 | 1≦n≦2000 | VARCHAR2(2n) |
DATE※4 | データ長については,マニュアル「HiRDB Version 9 SQLリファレンス」を参照してください。 | CHAR(10) |
TIME※4 | CHAR(8) | |
INTERVAL YEAR TO DATE※5 | RAW(5) | |
INTERVAL HOUR TO SECOND※5 | RAW(4) | |
BLOB※6 | 1≦n≦2147483647 | LONG RAW(n) |
X'A'→X'C'
X'B'→X'D'
X'C'→X'C'
X'D'→X'D'
X'E'→X'C'
X'F'→X'F'
ODBCドライバを使用してOracle又はSQL Serverへデータ連動する場合は,HiRDBデータ型をODBCのデータ型に変換してODBC関数を発行します。このため,反映対象表の作成時には,ODBCのデータ型から変換できるデータ型を使用してください。
HiRDBからODBCドライバを使用してデータ連動する場合の,抽出対象表と反映対象表のデータ型の対応を次の表に示します。
表4-5 ODBCを使用して反映するデータのデータ型の対応
HiRDBデータ型 | 対応するODBCのデータ型 | ||
---|---|---|---|
データ属性 | データの長さ | ODBC SQLデータ型 | ODBC Cデータ型 |
INTEGER | データ長については,マニュアル「HiRDB Version 9 SQLリファレンス」を参照してください。 | SQL_INTEGER | SQL_C_SLONG |
SMALLINT | SQL_SMALLINT | SQL_C_SSHORT | |
DECIMAL※1 | SQL_DECIMAL | SQL_C_CHAR | |
LARGE DECIMAL※1 | |||
FLOAT | SQL_FLOAT | SQL_C_DOUBLE | |
SMALLFLT | SQL_REAL | SQL_C_FLOAT | |
CHAR※6 | 1≦n≦254 | SQL_CHAR | SQL_C_CHAR |
MCHAR | |||
NCHAR | |||
CHAR※6 | n≧255 | SQL_LONGVARCHAR | SQL_C_CHAR |
MCHAR | |||
NCHAR | |||
VARCHAR※6 | データ長については,マニュアル「HiRDB Version 9 SQLリファレンス」を参照してください。 | ||
LONG VARCHAR | |||
MVARCHAR | |||
LONG MVARCHAR | |||
NVARCHAR | |||
LONG NVARCHAR | |||
DATE※2 | SQL_DATE | SQL_C_DATE | |
TIME※2 | SQL_TIME※5 | SQL_C_TIME※5 | |
INTERVAL YEAR TO DATE※3 | SQL_BINARY(5) | SQL_C_BINARY | |
INTERVAL HOUR TO SECOND※3 | SQL_BINARY(4) | SQL_C_BINARY | |
BLOB※4 | SQL_LONGVARBINARY | SQL_C_BINARY |