逐次差分抽出を実行する前に、初期DBの創成が必要です。初期DBの創成は、"図13.9 初期DBの創成"の手順に従って行います。
例として使用する"表13.3 初期DBの創成環境の構成"を以下に示します。
資源 | 名前 |
---|---|
コンピュータ名 | SERVER1 |
インスタンス名 | DBINSTANCE |
データベース名 | 販促 |
SQLスクリプト | D:\def\in_sqlsv.sql |
出力CSVファイル | D:\def\out_sqlsv.csv |
サービスグループ名 | SERVICE1 |
DBサービス定義ファイル名 | SQLSVALL.def |
OUTTABLE識別名 | OUT00001 |
SQL Serverデータベースからレコードを抽出するためのSQLスクリプトを作成します。抽出したレコードは、CSV形式のファイルに格納します。
SQLスクリプトファイルの例を"表13.4 SQLスクリプトファイルの例"に示します。
set nocount on --行数を示すメッセージを表示しない SELECT ISNULL(CHAR01,''), --char型(注1) ISNULL(VCHAR01,''), --varchar型(注1) ISNULL(NCHAR01,''), --nchar型(注1) ISNULL(NVARCHAR01,''), --nvarchar型(注1) DECIMAL01, --decimal型 NUMERIC01, --numeric型 INT01, --int型 SINT01, --smallint型 FLOAT01, --float型 REAL01, --real型 DATE01, --date型 DATETIME01, --datetime型 DATETIME2_01,--datetime2型 CONVERT(VARCHAR,SMALLDATETIME01,120)+".00", --smalldatetime型(注2) TIME01 --time型 FROM SCHEMA01.IN_TBL; |
注1)文字型(char型、varchar型、nchar型、nvarchar型)は、ISNULL関数を指定してください。
注2)Linkexpressの時刻型は、秒未満の値まで必要です。smalldatetime型は、秒までであるため、秒未満までの値(.00)を付与してください。また、binary型のようにLinkexpressの初期抽出で使用できないデータ型があります。使用できないデータ型については、Linkexpressのマニュアルを参照してください。
SQLスクリプトの実行例を以下に示します。斜体の部分が修正箇所です。
---------------------------------------------------------------------------------------------------------- sqlcmd -S SERVER1\DBINSTANCE -E -d 販促 -i D:\def\in_sqlsv.sql -o D:\def\out_sqlsv.csv -s, -h -1 -W ----------------------------------------------------------------------------------------------------------
格納システムへの転送データ形式に変換するために、LinkexpressのDBサービス定義を作成します。DBサービス定義の作成の詳細については、Linkexpressのマニュアルを参照してください。
DBサービス定義の例を"表13.5 DBサービス定義の例"に示します。
INTABLE NAME = INT00001 DATATYPE = ( local, non-attr csv ) CODE = sjis-ms ITEM = ( ( ITEM1, char(10)) ,( ITEM2, vchar(10)) ,( ITEM3, nchar(10)) ,( ITEM4, vnchar(10)) ,( ITEM5, pack(5,1)) ,( ITEM6, zone(5,1)) ,( ITEM7, int) ,( ITEM8, sint) ,( ITEM9, double) ,( ITEM10, real) ,( ITEM11, date) ,( ITEM12, datetime) ,( ITEM13, datetime) ,( ITEM14, datetime) ,( ITEM15, time) ) FILE = D:\def\out_sqlsv.csv ; EXTRACT NAME = EXT00001 INTABLE = INT00001 CSV_INFO = ((DATE_DELIMITER,HYPHEN)) SELECT = * ; OUTTABLE NAME = OUT00001 DATATYPE = ( local ) EXTRACT = EXT00001 CODE = jef-ebcdic-kana TEMPDIR = C:\temp FILE = D:\def\out_sqlsv LOADMODE = (new-ignore, insert) ; |
以下の手順で格納システムへの転送データを作成します。転送データの作成の詳細については、Linkexpressのマニュアルを参照してください。
転送データの作成例を以下に示します。斜体の部分が修正箇所です。
------------------------------------------------ lxgensv -s SERVICE1 -f SQLSVALL (注) lxintsv -s SERVICE1 lxstrdb -s SERVICE1 -t OUT00001 ------------------------------------------------ 注)SQLSVALLには、拡張子(.def)を省略したDBサービス定義ファイル名を指定してください。
格納側システムにデータを転送後、初期DBを創成します。転送方法の詳細については、Linkexpressのマニュアルを参照してください。