Hitachi

データベース抽出・反映サービス機能 HiRDB Dataextractor Version 10


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は指定されたデータを比較します。

表3‒12 HiRDB Dataextractorで変換できるデータ型(SQL Serverの場合)(1/2)

抽出側のデータ型(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

表3‒13 HiRDB Dataextractorで変換できるデータ型(SQL Serverの場合)(2/2)

抽出側のデータ型(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の文字数である必要があります。