HiRDB データ連動拡張機能 HiRDB Datareplicator Extension Version 8
抽出処理で抽出側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 | |
All Rights Reserved. Copyright (C) 2006, 2012, Hitachi, Ltd.