「StiLL」 デザイン情報243 StiLLコマンド-- CSVファイルの書込み高速化テクニック(3分が20秒に!)
                             
  【テーマ】
CSVファイルを扱っていて書込み(出力)が遅いと感じたことはありませんか?
今回は目から鱗の高速化テクニックをご紹介します。
    【方法】
「CSVデータ更新(BtTextWrite)」StiLLボタンを2つ使います。
1つ目の更新で見出し行のみを[新規に書込み]で出力し、2つ目の更新で明細部を[上書きの場合は見出し行分を除いて追加]で出力します。
    【参考】
通常4万件のレコード(項目数18)を全件新規に書き込むと平均3分かかるところ、今回の方法で約20秒となり、9分の1に短縮できました。
※計測時間は動作環境により変化します。
 
                 
                             
■ 今回の内容                          
CSVデータを出力する場合、レコード件数が1000件、2000件程度ならあまり気にならない処理時間も、10000件ともなると
書込み処理に30秒程かかるようになります。(項目数10の場合の平均)
今回はこの所要時間を大幅に短縮する方法をご紹介します。
本例では下図のような10000件のデータを保存対象とします。
データのイメージ
画面の領域
・ポイント
 ・最初の「CSVデータ更新(BtTextWrite)」ボタンで見出し行のみを指定して新規に出力します。
 ・2つ目の「CSVデータ更新(BtTextWrite)」ボタンで見出し行を除いて追加出力します。
■ ボタンの作成と設定                        
今回使用するStiLLボタンを示します。(下図赤枠)
画面の領域
@1つ目の「CSVデータ更新(BtTextWrite)」ボタンの設定
以下に設定状態を示します。
入力セル位置に見出し行の範囲( Sheet1!A1:J1 )を指定します。
また、新規/追加 は「新規に書込み」 を選択します。
OKボタンで設定を完了します。
このボタンでは見出し行のみが新規に書込まれます。
A2つ目の「CSVデータ更新(BtTextWrite)」ボタンの設定
以下に設定状態を示します。
入力セル位置に見出し行の開始位置( Sheet1!A1 )を指定します。
また、新規/追加 は「上書きの場合は見出し行分を除いて追加」 を選択します。
OKボタンで設定を完了します。
このボタンでは見出し行を除き明細データが追加で書込まれます。
■ ボタンの実行                        
1.1つ目のボタン、2つ目のボタンを「ボタン連続実行(BtPush)」ボタンのリストに設定して実行します。
   「ボタン連続実行(BtPush)」ボタンの設定例
 この連続実行を行うことで30秒程かかる処理が5秒程に短縮できます。
■ ご参考までに                        
1.通常4万件のレコード(項目数18)を全件新規に書き込むと平均3分かかるところ、今回の方法では約20秒で完了しました。
 9分の1に短縮。 ※計測時間は動作環境により変化します。(32bit)
 CSV等 テキストファイルの更新は追加を除き一般的にファイル単位での処理となることから、
 処理後の書込みに要する時間を短縮できるこの方法を取り入れてみてはいかがでしょうか。
 ボタンが1つ増えますが、ひと手間かける価値はあります。
(各ボタンの設定内容の詳細はStiLLヘルプをご確認ください)  
Copyright(C) アイエルアイ総合研究所 無断転載を禁じます