RecordSetを使用したデータハンドリング

Curlでは、構造化データを扱う際は、基本APIのRecordSetを使用します。RecordSetを使用することで、1つ以上のデータベースから取得したデータを、クライアント側でDBを操作するようにフィルタリングやソート等の処理を行うことが可能になります。

RecordSetは”deta centric”なアプリケーションには必須のAPIです。

RecordSet Data

RecordSetはRecordの集合を保持しています。各Recordは事前に定義されたキー(カラム)に対しての値を保持しています。カラム構造はフィールド定義(RecordfieldとRecordFieldsを使います)によって定義されます。

/wiki/samples/images/RecordSet.jpg

Curlでは、RecordSetを作成するのに、2種類の方法があります。
1.プログラミングにより生成する方法
2.CSV形式のファイルデータを読み込み生成する方法

また、CurlAPIにはデータベース、もしくはリモートのデータファイルと直接接続できるものもあります(RecordSetを使用したデータハンドリング:2 でご紹介いたします。)

プログラミングによりRecordSetを生成する方法

他のCurlオブジェクトと同じように、RecordSetもコンストラクタを呼び出し、引数を使うことでインスタンスを生成します。

・RecordFieldsはRecordFieldの集合体を定義するために使用されます。各RecordFieldの記述は各カラムの名前とデータ型を宣言しています。)
・RecordDataオブジェクトは1組のレコードの値を操作、管理するために使用されます。

 

{curl 5.0, 6.0 applet}

{value
   let items:RecordSet =
       {RecordSet
           {RecordFields
               || 各フィールドの名前や使用するデータ型(ドメイン)を定義
               {RecordField “Item”, domain = String},
               {RecordField “Description”, domain = String},
               {RecordField “Quantity”, domain = int}
           },
           || 各フィールドに値を代入したレコードを定義、RecordSetに代入しています。
           {RecordData Item = “PR1400”, Description = “Blue pens”, Quantity = 12},
           {RecordData Item = “LG4597”, Description = “Envelopes”, Quantity = 100},
           {RecordData Item = “NP3400”, Description = “Notepads”, Quantity = 6},
           {RecordData Item = “PN5601”, Description = “Pencils”, Quantity = 28}
       }
  ||RecordSetを表形式で表します
   let record-display:RecordGrid =
       {RecordGrid
           record-source = items
       }
   record-display
}

 

*基本のドメインは次のCurl型によって定義されています。: char, String, int, int64, float, double, bool, DateTime, Time, or any

 CSV形式のファイルデータを読み込み生成する方法

CSVは、データをカンマで区切って並べたデータ形式であり、大量のデータを一気にスプレッドシートやデータベース等からアプリケーションへ移行する際に有効な形式です。

CurlもこのCSV形式をサポートするAPIを持っています。CsvRecordSetはRecordSetのサブクラスであり、RecordSetの中に複数のRecordを自動で作成することが可能です。

それではまず、CSV形式のデータを作成してみましょう。 Microsoft ® Excel を使って、下記のようなデータを作成し、CSV形式で保存します。 inventory_items.csvという名前で任意のフォルダに保存して下さい。

 

/wiki/samples/images/csvdata.jpg

 次にCurlアプレットを作成してみましょう。コードは下記のようになります。
下記のコードをstart.curlとして、CSVファイルと同階層に保存してください。
今回は、CsvRecordSetを使用し、CSV形式のファイルをCurlにインポートします。

{curl 5.0, 6.0 applet}

{value
   let rs:CsvRecordSet =
       {CsvRecordSet  
           ||CSVファイルの場所を指定します。
           {url “inventory_items.csv”}
       }
   {RecordGrid record-source =  rs,
       width = 6in,
       height = 2in
   }
}

CsvRecordSetは以下のステップでCSVデータを読み込みます。

・CSVデータの各行からRecordを作成
・データの各フィールドをパース
・各フィールドをCurlデータ型へ変換