ページのトップに戻る
Interstage Data Effector ユーザーズガイド

3.2.5 いろいろなデータ抽出方法

Data Effectorの抽出機能には、以下に示すいろいろな抽出方法があります。これらを組み合わせることで、多種多様な業務要件に対応できます。

3.2.5.1 見出し行(項目名)のないCSVファイルを扱う場合

データベースのエクスポート機能などを使って抜き出したCSV形式のファイルには、見出し行(項目名)が付加されていない場合があります。このようなデータだけのファイルも、そのままData Effectorで抽出できます。
見出し行だけのファイルをスキーマ情報ファイルとして別に定義しておけば、データファイルと合わせて処理します。


1つのスキーマ情報ファイルと、3つのCSV形式のデータファイルを入力ファイルとして定義します。

WindowsWindowsの場合

SchemaFile  "D:¥Shunsaku¥schema¥schema.csv"
DataFile    "D:¥Shunsaku¥indata¥data001.csv"
DataFile    "D:¥Shunsaku¥indata¥data002.csv"
DataFile    "D:¥Shunsaku¥indata¥data003.csv"

SolarisLinuxLinux/Solarisの場合

SchemaFile  /home/shunsaku/schema/schema.csv
DataFile    /home/shunsaku/data/data1.csv
DataFile    /home/shunsaku/data/data2.csv
DataFile    /home/shunsaku/data/data3.csv

コマンド利用時は、入力定義ファイルにスキーマ情報ファイルを指定します。
C API利用時は、AsisSetSchemaSelect関数にスキーマ情報ファイルを指定します。


参照

スキーマ情報ファイルの内容については、“2.1.1 CSV形式の場合”を参照してください。

スキーマ情報ファイルの指定方法については、以下を参照してください。


3.2.5.2 抽出結果を既存ファイルに追記する場合

抽出結果を書き出す出力ファイルがすでに存在する場合、出力時の処理モードを以下から選択できます。

コマンド利用時は、出力定義ファイルで指定します。
C API利用時は、AsisAddQuerySelect関数のWModeパラメタに指定します。


コマンド利用時、出力定義ファイルを指定した例を以下に示します。

検索番号1の結果を、kekka1.xmlに上書きします。
検索番号2の結果を、kekka2.xmlに上書きします。
検索番号3の結果を、kekka3.xmlに追記します。
検索番号4の結果を、kekka4.xmlに追記します。


WindowsWindowsの場合

1> D:¥Shunsaku¥outdata¥kekka1.xml
2> D:¥Shunsaku¥outdata¥kekka2.xml
3>> D:¥Shunsaku¥outdata¥kekka3.xml
4>> D:¥Shunsaku¥outdata¥kekka4.xml

SolarisLinuxLinux/Solarisの場合

1> /home/shunsaku/outdata/kekka1.xml
2> /home/shunsaku/outdata/kekka2.xml
3>> /home/shunsaku/outdata/kekka3.xml
4>> /home/shunsaku/outdata/kekka4.xml

参照

指定書式の詳細については、以下を参照してください。


注意

上書きを選択した場合、既存データを消去してしまうので注意してください。


3.2.5.3 抽出結果の項目を指定する場合

抽出条件に一致した項目の中から、出力したい項目だけを指定できます。
コマンド利用時は、検索定義ファイルにリターン式を指定します。
C API利用時は、AsisAddQuerySelect関数のReturnパラメタにリターン式を指定します。

例として以下の文書があるものとします。


文書A

"empno","name","date","expense","area","train","taxi"
"19980120","鈴木太郎","2007年06月30日","15700円","東京都千代田区","7200円",""
  :

文書B

"empno","name","date","expense","area","train","taxi"
"20012111","佐藤花子","2007年07月01日","16020円","大阪府大阪市阿倍野区","14200円","1820円"
  :

文書C

"empno","name","date","expense","area","train","taxi"
"19980120","鈴木太郎","2007年07月02日","2400円","神奈川県横浜市港北区","2400円",""
  :

文書D

<doc>
 <ID>1234567</ID>
 <Name>FujitsuTaro</Name>
 <Birthday>19700310</Birthday>
 <Career>
  <License>
   <Name>情報処理
    <Kind>2種</Kind>
   </Name>
   <Date>20020101</Date>
  </License>
  <License>
   <Name>英語検定
    <Kind>1級</Kind>
   </Name>
   <Date>20030901</Date>
  </License>
 </Career>
</doc>

以下に、検索定義ファイルにリターン式を指定した例を示します。

交通費(expense)が10000円より安い(小さい)人の従業員番号(empno)および出張日(date)を、1つのファイルに抽出します。

1 {$empno,$date}   $expense < 10000

結果:

"empno","date"
"19980120","2007年07月02日"

氏名(Name)がFujitsu Taroの、氏名(Name)と資格(License)を、1つのファイルに抽出します。

1 {/doc/Name,/doc/Career/License/Name}   /doc/Name = 'Fujitsu Taro'

結果:

<doc>
 <Name>FujitsuTaro</Name>
 <Career>
  <License>
   <Name>情報処理
    <Kind>2種</Kind>
   </Name>
  </License>
  <License>
   <Name>英語検定
    <Kind>1級</Kind>
   </Name>
  </License>
 </Career>
</doc>

参照

指定書式の詳細については、以下を参照してください。


3.2.5.4 データ行だけを出力する場合

Data Effectorの処理結果をデータベースに格納する場合など、見出し行(項目名)が不要なときがあります。このようなデータ行だけの出力もData Effectorで指定できます。

コマンド利用時は、出力定義ファイルにスキーマ情報ファイルとデータファイルを別々に指定します。
C API利用時は、AsisAddQuerySelect関数のOutFileパラメタに指定します。


以下に、コマンド利用時、出力定義ファイルを指定した例を示します。

検索番号2および3の結果は、見出し行とデータ行を分けて出力します。

WindowsWindowsの場合

1> D:¥Shunsaku¥outdata¥kekka1.csv
2> D:¥Shunsaku¥outdata¥kekka2_header.csv;D:¥Shunsaku¥outdata¥kekka2_data.csv
3> D:¥Shunsaku¥outdata¥kekka3_header.csv;D:¥Shunsaku¥outdata¥kekka3_data.csv

SolarisLinuxLinux/Solarisの場合

1> /home/shunsaku/outdata/kekka1.csv
2> /home/shunskau/outdata/kekka2_header.csv;/home/shunsaku/outdata/kekka2_data.csv
3> /home/shunsaku/outdata/kekka3_header.csv;/home/shunsaku/outdata/kekka3_data.csv

出力ファイルの例

kekka1.csv

"empno","name","date","expense","area","train","taxi"
"19980120","鈴木太郎","2007年06月30日","15700円","東京都千代田区","7200円",""
  :

kekka2_header.csv(スキーマ情報ファイルだけの例)

"empno","name","date","expense","area","train","taxi"

kekka2_data.csv(データファイルだけの例)

"20012111","佐藤花子","2007年07月01日","16020円","大阪府大阪市阿倍野区","14200円","1820円"
  :

kekka3_header.csv(スキーマ情報ファイルだけの例)

"empno","name","date","expense","area","train","taxi"

kekka3_data.csv(データファイルだけの例)

"19980120","鈴木太郎","2007年07月02日","2400円","神奈川県横浜市港北区","2400円",""
  :

参照

指定書式の詳細については、以下を参照してください。


3.2.5.5 データの後方空白を取り除く場合

例えば、データベースから抽出されたデータには、各カラムの文字数にあわせ、データの後ろに空白文字が含まれることがあります。

このような、桁あわせのために付加されたデータの後方空白を取り除く場合、検索式にrtrim関数を指定します。

例として以下の文書があるものとします。

文書

"empno","name","date","expense"
"19980120","鈴木△太郎△△","2007年06月30日","15700円"
"20012111","佐藤山△佳代子","2007年07月01日","16020円"
"19980120","鈴木△太郎△△","2007年07月02日","2400円"

△は空白文字を表します。


従業員氏名(name)が“鈴木△太郎”と一致するデータを抽出します(検索定義ファイルの指定例)。この場合、検索式の左辺にrtrim関数を指定することで、従業員氏名の後方空白が取り除かれます。

1 rtrim($name) == "鈴木△太郎"

結果

"empno","name","date","expense"
"19980120","鈴木△太郎△△","2007年06月30日","15700円"
"19980120","鈴木△太郎△△","2007年07月02日","2400円"

注意

上記例では、検索時にデータの後方空白を取り除いているだけです。
抽出結果として、後方の空白を取り除いたデータは出力できません。

参照

rtrim関数の指定方法の詳細については、“A.8.2 rtrim関数”を参照してください。