3.3.3 抽出したデータのデータ型変換
HiRDB Dataextractorで変換および比較できるデータ型を,「表3-12 HiRDB Dataextractorで変換できるデータ型(SQL Serverの場合)(1/2)」,「表3-13 HiRDB Dataextractorで変換できるデータ型(SQL Serverの場合)(2/2)」に示します。
データを反映するとき,HiRDB Dataextractorは抽出対象の列と反映対象の列とを比較し,「表3-12 HiRDB Dataextractorで変換できるデータ型(SQL Serverの場合)(1/2)」,「表3-13 HiRDB Dataextractorで変換できるデータ型(SQL Serverの場合)(2/2)」に示すデータ型の組み合わせであればデータ型を変換します。
また抽出する行を選択する場合,表式記述ファイルの条件の指定が「表3-12 HiRDB Dataextractorで変換できるデータ型(SQL Serverの場合)(1/2)」,「表3-13 HiRDB Dataextractorで変換できるデータ型(SQL Serverの場合)(2/2)」に示すデータ型の組み合わせであれば,HiRDB Dataextractorは指定されたデータを比較します。
抽出側のデータ型(SQL Server内部データ型) |
反映側(HiRDB)のデータ型 |
||||
---|---|---|---|---|---|
数データ INT,SMALLINT,FLOAT,SMALLFLT |
数データ DECIMAL |
文字データ CHAR※1※2 |
文字データ VARCHAR※1※2 |
混在文字データ MCHAR,MVARCHAR※1※2 |
|
bigint |
○※7 |
×※8 |
○ |
○ |
○ |
int |
|||||
smallint |
|||||
tinyint |
|||||
bit |
|||||
decimal(p1,s1) |
○※7 |
○※8 |
○ |
○ |
○ |
numeric(p1,s1) |
|||||
money |
|||||
smallmoney |
|||||
float(f) |
○※7 |
×※8 |
○ |
○ |
○ |
real |
|||||
char(c1) |
○※9 |
×※8 |
○ |
○ |
○ |
varchar(c1) |
|||||
nchar(n1) |
× |
× |
×※13 |
×※13 |
○ |
nvarchar(n1) |
|||||
datetime※11 |
× |
× |
○ |
○ |
○ |
smalldatetime※11 |
|||||
binary(b1) |
× |
× |
× |
○※12 |
× |
varbinary(b1) |
|||||
sql_variant |
抽出側のデータ型(SQL Server内部データ型) |
反映側(HiRDB)のデータ型 |
|||||
---|---|---|---|---|---|---|
各国文字データ NCHAR,NVARCHAR※2※3 |
日付データ,時刻データ DATE, TIME※4 |
日間隔データ,時間隔データ YEAR, HOUR※4 |
時刻印データ TIMESTAMP※5 |
長大データBLOB,BINARY※6 |
抽象データ型 SGMLTEXT,XML,FREEWORD |
|
bigint |
× |
× |
× |
× |
× |
× |
int |
||||||
smallint |
||||||
tinyint |
||||||
bit |
||||||
decimal(p1,s1) |
||||||
numeric(p1,s1) |
||||||
money |
||||||
smallmoney |
||||||
float(f) |
||||||
real |
||||||
char(c1) |
○ |
○※10 |
× |
× |
× |
× |
varchar(c1) |
○ |
× |
× |
× |
× |
× |
nchar(n1) |
||||||
nvarchar(n1) |
||||||
datetime※11 |
× |
○ |
○ |
○ |
× |
× |
smalldatetime※11 |
||||||
binary(b1) |
× |
× |
× |
× |
○ |
× |
varbinary(b1) |
||||||
sql_variant |
× |
× |
× |
× |
× |
× |
- (凡例)
-
○:変換できます。
×:変換できません。
- 注※1
-
この組み合わせで実行する場合の注意を次に示します。
-
抽出側のデータ長<反映側のデータ長の場合,1バイトの空白が設定されます。
-
- 注※2
-
次の場合は,データの切り捨てが発生するため注意してください。
-
文字データ,混在文字データ,各国文字データの場合
抽出側のデータ長>反映側のデータ長
切り捨てが発生した場合は,環境変数XTERRLEVELの指定に従って処理されます。
-
- 注※3
-
この組み合わせで実行する場合の注意を次に示します。
-
抽出側のデータ長≦2×反映側の文字数である必要があります。
-
抽出側のデータ長<反映側のデータ長の場合,残りの領域に1バイトの空白が設定されます。
-
- 注※4
-
-
DATE,およびYEAR型に反映する場合は,日付情報だけが取り出されて反映されます。
-
TIME,およびHOUR型に反映する場合は,時刻情報だけが取り出されて反映されます。
-
datetime型からTIME,およびHOUR型に反映する場合,ミリ秒以下は切り捨てられますが,処理は続行されます。
-
- 注※5
-
-
datetime型からの反映時,TIMESTAMP型の小数けたが3けた未満の場合は切り捨てられます。長い場合は0x00が設定されます。
-
切り捨てが発生した場合は,環境変数XTERRLEVELの指定に従って処理されます。
-
smalldatetime型からの反映時,秒以下は0x00が設定されます。
-
- 注※6
-
次の場合は,データの切り捨てが発生するため注意してください。
-
抽出側のデータ長>反映側のデータ長
ただし,環境変数XTLOBBUFSIZEが指定されている場合は,環境変数XTERRLEVELの指定に従って処理されます。
-
- 注※7
-
次の場合は,小数部データの切り捨てが発生するため注意してください。
-
抽出側の小数部のけた数>反映側の小数部のけた数
JXU7210Iメッセージが出力されますが,処理は続行されます。
-
- 注※8
-
-
HiRDBのDECIMAL型へ反映する場合は属性(精度,および位取り)が一致している必要があります。属性が異なる場合は,JXU7211Eメッセージが出力され,エラーとなります。
-
money型は,DECIMAL(19,4)として,smallmoney型はDECIMAL(10,4)として扱われます。
-
属性が異なる場合で,HiRDBのDECIMAL型に反映したいときは,列名記述ファイルに,CAST関数で反映側のDECIMAL属性での抽出を指定してください。
抽出側がSQL Serverの表Sの列S1(NUMERIC(10,5))で,反映側がHiRDBの表Hの列H1(DECIMAL(20,5))の場合のコマンド指定例を示します。
- コマンド指定例
xtrepS -o -s C:\win32app\Hitachi\hirdbxt\conf\clm -r 表H 表S
- C:\win32app\Hitachi\hirdbxt\conf\clmの内容
-
cast(列S1 as decimal(20,5))
-
- 注※9
-
文字属性を数データに変換する場合,文字属性のデータは1バイトコードの数値文字列である必要があります。
- 注※10
-
次の形式のデータだけを抽出対象とします。それ以外の場合はエラーとなります。
抽出側(SQL Server)
反映側(HiRDB)
データ型
データ形式
データ型
CHAR(10)
"YYYY-MM-DD"
DATE
CHAR(8)
"HH:MM:SS"
TIME
- 注※11
-
一つのdatetime属性またはsmalldatetime属性の列を反映側の日付データと時刻データの2列に変換したい場合は,datetimeまたはsmalldatetime属性の列を2列分抽出する必要があります。
- 注※12
-
文字型で抽出します。そのため,binary型またはvarbinary型で登録したデータを抽出した場合,格納されているデータは16進数がそのまま文字に変換され抽出されます。
- (例)
-
格納データが0x616263("abc")の場合,抽出データは0x363136323633("616263")になります。
binary形式で抽出したい場合は,CONVERT関数で該当する列をvarchar型にしてから抽出してください。抽出側がSQL Serverの表Sの列S1 sql_variantで,反映側がHiRDBの表Hの列H1 varchar(8000)の場合のコマンド指定例を次に示します。
- コマンド指定例
xtrepS -o -s C:\win32app\Hitachi\hirdbxt\conf\clm -r 表H 表S
- C:\win32app\Hitachi\hirdbxt\conf\clmの内容
-
convert(varchar,列S1)
- 注※13
-
反映側が文字データの場合,環境変数XTSQLNCSETにutf-16を指定して文字集合列を抽出・反映するときの注意を次に示します。
-
2×抽出側NCHARの文字数=反映側CHARの文字数である必要があります。
-
2×抽出側NVARCHARの文字数=反映側VARCHARの文字数である必要があります。
-