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の文字数である必要があります。