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

F.1 データの抽出

入力データの中で検索条件に一致するデータを検索し、抽出結果をファイルに出力します。

ドキュメントサンプル

スキーマ情報ファイル (schema.csv)

"Kbn","Kname","Number","Nname","Code","Name","Val"

入力データファイル (indata.csv)

"01","設備","1000","第一開発部","AAA","ブロックA","1000"
"01","設備","1000","第一開発部","BBB","ブロックB","1200"
"01","設備","1000","第一開発部","CCC","ブロックC","800"
"02","事務","1000","第一開発部","AAA","ブロックA","500"
"02","事務","1000","第一開発部","BBB","ブロックB","200"
"01","設備","1001","第二開発部","AAA","ブロックA","100"
"01","設備","1001","第二開発部","BBB","ブロックB","500"
"02","事務","1001","第二開発部","AAA","ブロックA","5000"
"02","事務","1001","第二開発部","BBB","ブロックB","3200"
"01","設備","1002","第三開発部","AAA","ブロックA","1500"
"01","設備","1002","第三開発部","BBB","ブロックB","1000"
"02","事務","1002","第三開発部","AAA","ブロックA","1520"

抽出条件

3つの検索条件に対する抽出処理を同時に実行します。


APIの使用例

以下にAPIを使用したプログラミング例を示します。

#include <stdio.h>
#include "libAsis.h"

/* 抽出機能 サンプルプログラム */
int main()
{
  /* ハンドル変数群 */
  ASISHANDLE handle;

  /* 作業用変数群 */
  int status;

  /* 入力パラメタ群 */
  char *logFile;
  char *CharacterCode;
  char *inFileType;
  char *query1, *query2, *query3;
  char *outFile1, *outFile2, *outFile3;
  char *queryId1, *queryId2, *queryId3;  char *schemaFile;
  int inFileCnt;
  char *inFile;

  /* エラー用変数群 */
  int errorLevel;
  const char *Message;

  /* 変数の初期化 */
  handle = NULL;

  /* 抽出ハンドルの割当て */
  logFile = "C:¥¥shunAsis¥¥sample¥¥Select.log";
  status = AsisAllocHandleSelect( &handle, logFile );
  if ( status != ASIS_SUCCESS ) {
    goto ErrorEnd;
  }

  /* 動作環境パラメタの指定 */
  CharacterCode = "SHIFT-JIS";
  inFileType = "CSV";
  status = AsisInitSelect( handle, CharacterCode, inFileType,
                           NULL, NULL, 0, 0,
                           NULL, NULL, NULL );
  if ( status != ASIS_SUCCESS ) {
    goto ErrorEnd;
  }

  /* 抽出条件1の登録 */
  query1 = "$Kbn==¥'01¥'";
  outFile1 = "C:¥¥shunAsis¥¥sample¥¥out1.csv";
  queryId1 = "1";
  status = AsisAddQuerySelect( handle, query1, 0,
                               outFile1, queryId1, NULL, NULL );
  if ( status == ASIS_ERROR ) {
    goto ErrorEnd;
  }

  /* 抽出条件2の登録 */
  query2 = "%1 AND $Code==¥'AAA¥'";
  outFile2 = "C:¥¥shunAsis¥¥sample¥¥out2.csv";
  queryId2 = "2";
  status = AsisAddQuerySelect( handle, query2, 0,
                               outFile2, queryId2, NULL, NULL );
  if ( status == ASIS_ERROR ) {
    goto ErrorEnd;
  }

  /* 抽出条件3の登録 */
  query3 = "~(%1) AND $Code==¥'AAA¥'";
  outFile3 = "C:¥¥shunAsis¥¥sample¥¥out3.csv";
  queryId3 = "3";
  status = AsisAddQuerySelect( handle, query3, 0,
                               outFile3, queryId3, NULL, NULL );
  if ( status == ASIS_ERROR ) {
    goto ErrorEnd;
  }


  /* スキーマ情報の指定 */
  schemaFile = "C:¥¥shunAsis¥¥sample¥¥schema.csv";
  status = AsisSetSchemaSelect( handle, 1, schemaFile );
  if ( status != ASIS_SUCCESS ) {
    goto ErrorEnd;
  }

  /* 入力ファイルの指定 */
  inFileCnt = 1;
  inFile = "C:¥¥shunAsis¥¥sample¥¥indata.csv";
  status = AsisSetDataSelect( handle, inFileCnt, &inFile );
  if ( status != ASIS_SUCCESS ) {
    goto ErrorEnd;
  }

  /* 抽出の実行 */
  status = AsisExecuteSelect( handle );
  if ( status != ASIS_SUCCESS ) {
    goto ErrorEnd;
  }

  /* 抽出ハンドルの解放 */
  status = AsisFreeHandleSelect( handle );
  if ( status != ASIS_SUCCESS ) {
    goto ErrorEnd;
  }

  return 0;


ErrorEnd:  /* エラーが発生した際のエラー処理 */

  /* エラー情報の取得 */
  status = AsisGetErrorLevel( handle, &errorLevel );
  if ( status == ASIS_SUCCESS ) {
    switch( errorLevel ) {
    case ASIS_EL_WARNING:
        printf( "エラーレベル    : 警告¥n");
        break;
    case ASIS_EL_ERR_DATA:
        printf( "エラーレベル    : データのエラー¥n");
        break;
    case ASIS_EL_ERR_PARAMETER:
        printf( "エラーレベル    : パラメタのエラーまたは使用方法のエラー¥n");
        break;
    case ASIS_EL_ERR_ENVIRONMENT:
        printf( "エラーレベル    : 実行環境のエラー¥n");
        break;
    default:
        printf( "エラーレベル取得エラー¥n");
        break;
    }
  }
  else {
    printf( "エラーレベル取得エラー : %d¥n", status );
  }

  status = AsisGetMessageText( handle, &Message );
  if ( status == ASIS_SUCCESS ) {
    printf( "メッセージ : %s¥n", Message );
  }
  else {
    printf( "メッセージ取得エラー : %d¥n", status );
  }


  /* 抽出ハンドルの解放 */
  if ( handle != NULL ) {
    status = AsisFreeHandleSelect( handle );
    if ( status != ASIS_SUCCESS ) {
      printf( "ハンドル解放エラー : %d¥n", status );
    }
  }

  return 1;
}

実行結果

抽出条件1の実行結果(out1.csv)

"Kbn","Kname","Number","Nname","Code","Name","Val"
"01","設備","1000","第一開発部","AAA","ブロックA","1000"
"01","設備","1000","第一開発部","BBB","ブロックB","1200"
"01","設備","1000","第一開発部","CCC","ブロックC","800"
"01","設備","1001","第二開発部","AAA","ブロックA","100"
"01","設備","1001","第二開発部","BBB","ブロックB","500"
"01","設備","1002","第三開発部","AAA","ブロックA","1500"
"01","設備","1002","第三開発部","BBB","ブロックB","1000"

抽出条件2の実行結果(out2.csv)

"Kbn","Kname","Number","Nname","Code","Name","Val"
"01","設備","1000","第一開発部","AAA","ブロックA","1000"
"01","設備","1001","第二開発部","AAA","ブロックA","100"
"01","設備","1002","第三開発部","AAA","ブロックA","1500"

抽出条件3の実行結果(out3.csv)

"Kbn","Kname","Number","Nname","Code","Name","Val"
"02","事務","1000","第一開発部","AAA","ブロックA","500"
"02","事務","1001","第二開発部","AAA","ブロックA","5000"
"02","事務","1002","第三開発部","AAA","ブロックA","1520"

抽出条件の削除

AsisDeleteQuerySelect関数に、抽出ハンドルと検索番号を指定して検索式を削除します。
検索番号に0を指定した場合はすべての検索式を削除します。


  int queryNo;

  /* 抽出条件の登録 */
  queryNo = AsisAddQuerySelect( handle, query, 0,
                                outFile, NULL, NULL, NULL );
  if ( queryNo == ASIS_ERROR ) {
    goto ErrorEnd;
  }



  /* 抽出条件の削除 */
  status = AsisDeleteQuerySelect( handle, queryNo );
  if ( status != ASIS_SUCCESS ) {
    goto ErrorEnd;
  }