4.3.4 データ型の対応の設計
表のデータ型とDatareplicatorで反映するデータ形式の関係を次の表に示します。
データ型 |
データ形式,データ長 |
文字コード変換の可否 |
---|---|---|
INTEGER |
HiRDBのデータ形式,データ長と同じ |
× |
SMALLINT |
× |
|
DECIMAL |
× |
|
LARGE DECIMAL |
× |
|
FLOAT |
× |
|
SMALLFLT |
× |
|
CHAR |
○ |
|
VARCHAR |
○ |
|
LONG VARCHAR |
VARCHARとして認識 |
○ |
NCHAR |
HiRDBのデータ形式,データ長と同じ |
○ |
NVARCHAR |
○ |
|
LONG NVARCHAR |
NVARCHARとして認識 |
○ |
MCHAR |
HiRDBのデータ形式,データ長と同じ |
○ |
MVARCHAR |
○ |
|
LONG MVARCHAR |
MVARCHARとして認識 |
○ |
DATE |
HiRDBのデータ形式,データ長と同じ |
× |
TIME |
× |
|
TIMESTAMP |
× |
|
INTERVAL YEAR TO DATE |
× |
|
INTERVAL HOUR TO SECOND |
× |
|
SGMLTEXT |
○ |
|
FREEWORD |
○ |
|
XML |
× |
|
BLOB |
× |
|
BINARY |
× |
|
繰返し列 |
× |
- (凡例)
-
○:文字コード変換できます。
×:文字コード変換できません。
抽出側DBによって,抽出側と反映側とでデータ型が異なることがあります。このため,反映対象表の作成時には,抽出対象表と反映対象表のデータ型を対応させる必要があります。データ型が対応していないと,反映処理がエラーになります。
データ型の対応について,抽出側DBごとに説明します。
- 〈この項の構成〉
(1) 抽出側DBがHiRDBの場合のデータ型の対応
抽出側DBがHiRDBの場合の,抽出対象表と反映対象表のデータ型の対応を次の表に示します。
抽出対象表のデータ型 |
反映対象表のデータ型 |
---|---|
INTEGER |
INTEGER |
SMALLINT |
SMALLINT |
DECIMAL |
DECIMAL |
LARGE DECIMAL |
LARGE DECIMAL |
FLOAT |
FLOAT |
SMALLFLT |
SMALLFLT※1 |
CHAR |
CHAR又はMCHAR |
VARCHAR |
VARCHAR又はMVARCHAR |
NCHAR |
NCHAR |
NVARCHAR |
NVARCHAR |
MCHAR |
CHAR 又は MCHAR |
MVARCHAR |
VARCHAR 又は MVARCHAR |
DATE |
DATE |
TIME |
TIME |
TIMESTAMP |
TIMESTAMP |
INTERVAL YEAR TO DAY |
INTERVAL YEAR TO DAY |
INTERVAL HOUR TO SECOND |
INTERVAL HOUR TO SECOND |
SGMLTEXT※2 |
SGMLTEXT※2 |
FREEWORD |
FREEWORD |
XML |
XML |
BLOB※2 |
BLOB※2 |
BINARY |
BINARY |
- 注
-
-
反映対象表の列よりも長いデータや,数値がオーバフローするデータを反映しようとすると,反映側HiRDBでエラーになります。
-
繰返し列を指定できます。ただし,繰返し列の要素単位では抽出できません。
-
- 注※1
-
データ連動できますが,概数のため丸め誤差が発生します。
- 注※2
-
データ連動する場合は,HiRDBの表定義のRECOVERYオペランドにALLを指定してください。HiRDBの表定義については,マニュアル「HiRDB SQLリファレンス」を参照してください。
(2) 抽出側DBがXDM/SD E2の場合のデータ型の対応
抽出側DBがXDM/SD E2の場合の,抽出対象のデータと反映対象表のデータ型の対応を次の表に示します。
抽出対象のデータ※1 |
反映対象表のデータ型 |
|
---|---|---|
データ属性 |
データの長さ |
|
CHAR(n) |
1≦n≦30000 |
CHAR(n) |
CHAR(n) |
n>30000 |
VARCHAR(n) ※3 |
NCHAR(n) |
1≦n≦15000 |
NCHAR(n) |
NCHAR(n) |
n>15000 |
NVARCHAR(n) ※3 |
PACK(m,n) |
− |
DECIMAL(m+n,n) ※4 |
UNPACK(m,n)※2 |
− |
DECIMAL(m+n,n) ※4 |
COMP(m,n) |
1≦m≦4,n=0 |
SMALLINT |
COMP(m,n) |
5≦m≦9,n=0 |
INTEGER |
COMP(m,n) |
m=0又はm>10又はn≠0 |
DECIMAL(29,n)※6 |
BINARY(m,n) |
1≦m≦15,n=0 |
SMALLINT |
BINARY(m,n) |
16≦m≦31,n=0 |
INTEGER |
BINARY(m,n) |
m=0又はm>32 又はn≠0 |
DECIMAL(29,n) ※5 |
- (凡例)
-
−:該当しません。
- 注
-
反映対象表の列よりも長いデータや,数値がオーバフローするデータを反映しようとすると,反映側HiRDBでエラーになります。
- 注※1
-
XDM/DSでRESTRUCT文を指定している場合は,RESTRUCT文で定義した属性と長さになります。
- 注※2
-
UNPACK型のデータ変換で,次の条件のどれかを満たすとエラーになります。
-
ゾーン部の値が (F)16以外の場合
-
符号部の値が (F)16,(C)16,(D)16以外の場合
-
数値部の値が (0)16以上 (9)16以下 以外の場合
エラーになると,エラーメッセージと未反映情報が出力されて,エラーになった反映グループの反映処理が停止します。UOCを使った反映処理では,UNPACK型のデータ変換をしないで,抽出データをそのままUNPACK型データとしてUOCに渡し,反映処理を続行します。
-
- 注※3
-
空白サプレスはしません。
- 注※4
-
符号の正規化はしません。
- 注※5
-
BINARY型は,小数部けた数が0以外のときには,DECIMAL型に変換されます。そのとき,XDM/DSで扱えるDECIMAL型の精度の最大値は29のため,小数点以下30けた以降は切り捨てられます。
- 注※6
-
XDM/DSで扱えるDECIMAL型の精度の最大値は29になります。
(3) 抽出側DBがXDM/RD E2の場合のデータ型の対応
抽出側DBがXDM/RD E2の場合の,抽出対象表と反映対象表のデータ型の対応を次の表に示します。
抽出対象表のデータ型 |
反映対象表のデータ型 |
---|---|
INTEGER |
INTEGER |
SMALLINT |
SMALLINT |
DECIMAL |
DECIMAL |
LARGE DECIMAL |
LARGE DECIMAL |
FLOAT |
FLOAT |
SMALLFLT |
SMALLFLT※1 |
CHAR |
CHAR 又は MCHAR |
VARCHAR |
VARCHAR |
LONG VARCHAR |
|
NCHAR |
NCHAR |
NVARCHAR |
NVARCHAR |
LONG NVARCHAR |
|
MCHAR |
CHAR又はMCHAR |
MVARCHAR |
VARCHAR又はMVARCHAR |
LONG MVARCHAR |
|
DATE |
DATE |
TIME※3 |
TIME |
INTERVAL YEAR TO DAY |
INTERVAL YEAR TO DAY |
INTERVAL HOUR TO SECOND※3 |
INTERVAL HOUR TO SECOND |
BLOB※2 |
BLOB※2 |
- 注
-
-
反映対象表の列よりも長いデータや,数値がオーバフローするデータを反映しようとすると,反映側HiRDBでエラーになります。
-
繰返し列と配列列は指定できません。
-
- 注※1
-
データ連動できますが,概数のため丸め誤差が発生します。
- 注※2
-
BLOB型の列をデータ連動する場合は,HiRDBの表定義のRECOVERYオペランドにALLを指定してください。HiRDBの表定義については,マニュアル「HiRDB SQLリファレンス」を参照してください。
- 注※3
-
小数部を指定した列はデータ連動できません。
(4) 抽出側DBがADMの場合のデータ型の対応
抽出側DBがADMの場合の,抽出対象のデータと反映対象表のデータ型の対応を次の表に示します。
ADMでのデータ型 |
Datareplicatorでのデータ型 |
反映対象表のデータ型 |
|
---|---|---|---|
Cn |
CHAR(n) |
CHAR(n) |
|
Xn |
CHAR(n) |
CHAR(n) |
|
Pn |
n≦15 |
PACK(2n−1,0) |
DECIMAL(2n−1,0) |
n>15 |
CHAR(n) |
CHAR(n) |
- 注1
-
反映対象表の列よりも長いデータや,数値がオーバフローするデータを反映しようとすると,反映側HiRDBでエラーになります。
- 注2
-
XDM/DSのRESTRUCT文でADMのデータ型をUNPACK属性とした場合に,抽出された更新情報に次に示すデータが含まれるときは,反映処理が停止します。
-
ゾーン部の値が,(F)16以外の場合
-
符号部の値が (F)16,(C)16,(D)16以外の場合
-
数値部の値が (0)16以上 (9)16以下 以外の場合
エラーになると,エラーメッセージと未反映情報が出力されて,エラーになった反映グループの反映処理が停止します。UOCを使った反映処理では,UNPACK型のデータ変換をしないで,抽出データをそのままUNPACK型データとしてUOCに渡し,反映処理を続行します。
-
(5) 抽出側DBがPDMII E2の場合のデータ型の対応
抽出側DBがPDMII E2の場合の,抽出再定義フィールドと反映対象表のデータ型の対応を表4-12に,PDMII E2のフィールド属性と反映対象表のデータ型の対応を表4-13に示します。
抽出再定義文のフィールド属性 |
データの長さ |
反映対象表のデータ型 |
---|---|---|
CHAR(n) |
n≦30000 |
CHAR(n) |
NCHAR(n) |
n≦15000 |
NCHAR(n) |
PACK(m,n) |
− |
DECIMAL(m+n,n) |
PACKNS(m,n) |
− |
DECIMAL(m+n,n) |
UNPACK(m,n) |
− |
DECIMAL(m+n,n) |
UNPACKNS(m,n) |
− |
DECIMAL(m+n,n) |
COMP(m,n) |
1≦m≦4,n=0 |
SMALLINT |
5≦m≦9,n=0 |
INTEGER |
|
m=0又はm>10又はn!=0 |
DECIMAL(29,n)※ |
|
BINARY(m,n) |
1≦m≦15,n=0 |
SMALLINT |
16≦m≦31,n=0 |
INTEGER |
|
上記以外 |
FLOAT |
|
FLOAT(n) |
n=4,8 |
FLOAT |
- 注
-
反映対象表の列よりも長いデータや,数値がオーバフローするデータを反映しようとすると,反映側HiRDBでエラーになります。
- 注※
-
XDM/DSで扱えるDECIMAL型の精度の最大値は29になります。
表4‒13 PDMII E2のフィールド属性と反映対象表のデータ型の対応 PDMII E2のフィールド属性
データの長さ
反映対象表のデータ型
X(n)
n<=30000
CHAR(n)
P(m,n),AP(m,n)
n>0,2m−1>n
DECIMAL(2m−1,n)
n>0,2m−1<=n
DECIMAL(n,n)
n<=0
DECIMAL(2m−1−n,0)
Z(m,n),AZ(m,n)
n>0,m>n
DECIMAL(m,n)
n>0,m<=n
DECIMAL(n,n)
n<=0
DECIMAL(m−n,0)
B(m,n),AB(m,n)
n>0,2.5m>n
DECIMAL(2.5m,n)
n>0,2.5m<=n
DECIMAL(n,n)
n<=0
DECIMAL(2.5m−n,0)
F(n)
n=4,8
FLOAT
N(n)
n<=30000
NCHAR(↑n÷2↑)
- 注
-
反映対象表の列よりも長いデータや,数値がオーバフローするデータを反映しようとすると,反映側HiRDBでエラーになります。
(6) 抽出側DBがTMS-4V/SPの場合のデータ型の対応
抽出側DBがTMS-4V/SPの場合は,TMS-4V/SP/データ連携支援のユーザオウンコーディング(UOC)でデータ型を設定します。抽出側DBがTMS-4V/SPの場合のデータ型については,マニュアル「VOS3 TMS-4V/SP データ連携支援機能 TMS-4V/SP/データ連携支援」を参照してください。
(7) 抽出側DBがRDB1 E2の場合のデータ型の対応
抽出側DBがRDB1 E2の場合の,抽出対象表と反映対象表のデータ型の対応を次の表に示します。
抽出対象表のデータ型 |
反映対象表のデータ型 |
---|---|
INTEGER |
INTEGER |
SMALLINT |
SMALLINT |
DECIMAL |
DECIMAL |
FLOAT |
FLOAT |
SMALLFLT |
SMALLFLT※ |
CHAR |
CHAR 又は MCHAR |
VARCHAR |
VARCHAR |
LONG VARCHAR |
− |
NCHAR |
NCHAR |
NVARCHAR |
NVARCHAR |
- (凡例)
-
−:反映の対象にできません。
- 注
-
-
反映対象表の列よりも長いデータや,数値がオーバフローするデータを反映しようとすると,反映側HiRDBでエラーになります。
-
繰返し列は指定できません。
-
- 注※
-
データ連動できますが,概数のために丸め誤差が発生します。