今回の開発は
あるデータをCSVで生成する
ていうやつだったんだけど。
慣れたADODB接続で作って動かしてみると
遅い…
今思うと僕のコーディングに
問題があったのかもしれないが…
DAO接続に切替えてすぐ解決!!
もし同じように悩んでる人いたら
参考にしてみて!
MEMO
[開発環境]・OS:Windows10
・Office:2016
・開発言語:VBA
・INSERT行数:2,507行
※実際のツール用途:Yahooサーチ入稿バルク生成
CSVにDAO接続してINSERT
VBA Project の参照設定
VBEを開いたら
「ツール」→「参照設定」から
「Microsoft Office 16.0 Access database engine Object Library」
を選択。
MEMO
名前の通りDAO(Data Access Object)はAccessに特化したデータアクセス方法だそうだ。
※参考:「Access Study | Vol.16 AccessVBA徹底入門」
DAO接続のVBA記述
※ちなみにADOは以下記事を参考に
【VB.NET】ADODBを使ってExcelデータをSQL操作してみたINSERTはSQL文を使わずやってみた!
CSVにデータをINSERTする際
INSERT処理のSQL文を生成して実行するのは
とてもめんどくさい。。
先ほどのOpenRecordしたrsに対し
行追加(AddNew)し
CSV内の項目(Fields)に値をセットし
最後更新(Update)する!
ADOとDAOで比較してみて
CSVに追加した行数は
「2,507」行。
処理時間は
ADO:約50分(3,000秒)
DAO:1秒
えっ。。
さすがに俺のコーディングがおかしいと思う(笑)
と疑いながらADOの高速化を調べてみると
INSERT INTO table(column1, column2,…) Values(v1, v2,…)
というSQL文を生成→実行する事で
高速化できたというこちらの記事が…!
※参考:SQL ServerへのCSVファイルinsert高速化
途中で匙を投げて
INSERT文生成をやらなかった自分が悪かったのだ…。
これからはきちんと
色々試してみようと思った!!!(泣)
是非参考までに!!!