[an error occurred while processing this directive] [an error occurred while processing this directive]


プログラミング
逆引き
クライアントとの通信
VisMでの通信
Factoryでの通信
WebServiceでの通信
CSP (Cache' Server Pages)
Cache'SQL
設定・性能


【広告】









ファイル入力

File I/O (Input/Output)

キャシェーは強力な入出力機能を持っています。外部アプリケーションを使うことなくファイルの入出力、ネットワーク入出力、パラレル入出力、テープ入出力などが可能です。

ここではファイル入力を通してキャシェーの性能を体感してみましょう。



まずは入力から。
顧客リストファイルから情報を取り込むという例を想定してみます。

氏名住所生年月日メール
大谷 真二東京都文京区音羽49-311955/06/13mailaddress@hoopz.ne.jp

このような形式のCSVファイルからデータを取得しキャシェーのデータベースに格納します。CSVデータのサンプルとして1万件のデータを含むファイルを使用します。

CSVファイルのダウンロードサンプルデータのダウンロード
(LHA圧縮 391KB)

このファイルを解凍してc:\に保存してください。

それでは早速このファイルにキャシェーから開いてみましょう。キャシェー・ターミナルを開きます。

USER>

まずはファイルを開きます。Openコマンドを使用します。

USER> Set file="C:\data.csv"

USER> Open file

USER>

ではデータを読み込んでみましょう。UseコマンドとReadコマンドを使用します。

USER> Use file Read data

USER>

これでファイルの先頭1行が変数dataに格納されました。Writeコマンドで確認してみましょう

USER> Write data
大谷 真二,東京都文京区音羽49-31,1955/06/13,mailaddress@hoopz.ne.jp
USER>

このようにわずか3行のコマンド、48文字でファイルからデータが読み取れます。
あとは読み込んだ内容をグローバルに格納すればデータベースの完成です。

データベース構造は次のようなものを作成します。

格納グローバル名(SQLでいうテーブル名)^Personとします。グローバル名なので先頭に^記号がつきます。

その下に各個人のIDを持ちます。ここでは読み込んだ順番に連番を振り当てていきます。

その下に各個人のデータ、名前・住所・生年月日・メールアドレスをそれぞれ

  • Name ノード …… 名前を格納
  • Address ノード …… 住所を格納
  • Birth ノード …… 生年月日を格納します
  • Mail ノード …… メールアドレスを格納します
このようにデータを格納します。

実際にグローバルにデータを格納してみましょう。
まずは読み込んだ一行のデータから、カンマで区切られたデータを取得します。

USER> Write $Piece(data,",",1)
大谷 真二
USER>Write $Piece(data,",",2)
東京都文京区音羽49-31
USER>Write $Piece(data,",",3)
1955/06/13
USER>

このデータをグローバルに格納します

USER>Set ^Person(1,"Name")=$Piece(data,",",1)

USER>Set ^Person(1,"Address")=$Piece(data,",",2)

USER>Set ^Person(1,"Birth")=$Piece(data,",",3)

USER>Set ^Person(1,"Mail")=$Piece(data,",",4)

USER>

グローバルの内容を確認してみましょう

USER> ZWrite ^Person
^Person(1,"Name")=
USER>

ではこの操作をルーチンにまとめてみましょう。

LOAD(file)   ; CSVファイル読み込み
     Open file
     Use file
     For i=1:1  Read data  Quit:data=""  Do
     .Set ^Person(i,"name")=$Piece(data,",",1)
     .Set ^Person(i,"address")=$Piece(data,",",2)
     .Set ^Person(i,"birth")=$Piece(data,",",3)
     .Set ^Person(i,"mail")=$Piece(data,",",4)
     Close file
     Quit

このような感じになります。このルーチンをCSVという名前で保存・コンパイルしてください。 ルーチン作成方法

ルーチンの保存・コンパイルが終わったら、早速ルーチンを実行してみましょう。

キャシェー・ターミナルを開きます。
 次のように入力して、リターンキーを入力してください。

USER> DO LOAD^CSV("C:\data.csv")

 数秒で次の USER> という表示が出てきたと思います。このわずか数秒の間に、キャシエは一万件のデータをファイルから読み取り、データベースに格納したのです。

本当に格納されたかどうか確認してみましょう。

USER> ZW ^Person

 このようにコマンドを入力すると、次々とデータが表示されます。すべて表示が終わるにはしばらく時間がかかります。

 どうでしょうか? 本当に1万件登録されているのが確認できたでしょうか?



[an error occurred while processing this directive] [an error occurred while processing this directive]
2013/02/07Update