• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ADO(js) insert into高速化)

ADO(js)でのデータ挿入を高速化する方法について

このQ&Aのポイント
  • ADO(js)を使用してMDBのデータをCSV出力する際に、処理が非常に遅くなっている状況です。処理時間を短縮するための方法を教えていただきたいです。
  • 現在、ADOを使用してMDBデータベースのデータをCSVファイルに出力しているところですが、100件のデータを出力するだけでも4秒かかってしまいます。ループで出力したいため、処理時間を短縮する方法を教えていただけないでしょうか。
  • ADOを使用してMDBデータベースからCSVファイルにデータを出力する際に、処理時間が非常に長くなってしまいます。ループでの出力が必要なため、処理時間を短縮する方法を教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.4

うっかりしました。 SaveToFileメソッドは上書きなので、 以下のように変更してください。 obj.SaveToFile(ファイル名,2); 第2パラメータに2を指定しないと、 既存ファイルがある場合は失敗します。

newwave2
質問者

お礼

ありがとうございます! CSVは更新できないと思い込んでしまってました。 streamからならいけますね。 光が見えた気がいたします。 IEの設定をいじってますが、 「オートメーションサーバーはオブジェクトを作成できません」 がでて、まだ試せてはおりませんが、無事解決できると思います。 まお礼が遅くなってしまい申し訳ありません。 本当にありがとうございました。

その他の回答 (3)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

では発想を変えて、CSVファイルの方を変換したら? function 変換(ファイル名) {   var obj = new ActiveXObject("ADODB.Stream");   obj.Open();   obj.Type = 2;   obj.Charset = "SHIFT_JIS";   obj.LoadFromFile(ファイル名);   var 内容 = obj.ReadText();   内容 = 内容.replace(/C/g,"@");//★適宜変更   obj.Position = 0;   obj.WriteText(内容);   obj.SaveToFile(ファイル名);   obj.Close();   内容 = null;   obj = null; } インデントに漢字空白を使用しています。 コピペするとエラーになるので、半角空白に変換 してから御利用ください。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

MDBの中にクエリは作れませんか? クエリならReplaceやIIf等の関数が 使用できます。また、テーブルと 同様に操作することができます。

newwave2
質問者

お礼

ありがとうございます。 ADOからmdbのクエリを操作できることは知りませんでした。 試してみます。 IIFは使用できるのですけど、replaceが・・・

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

>例のようにループで出力したいと データベースの操作はSQLでやるのが最良です。 メソッドをループするのは最も拙い方法です。 その方法にこだわる限り、速度は改善しません。

newwave2
質問者

お礼

なぜループにしたかといいますと、mdbから抽出したデータのワードを置換します。 しかしながら、ADOではreplaceが使えないようです。 データを成型し、どのようにcsv出力するかと考えたときに、 知識がない故、ローカルで成型し、メソッドのループしか思いつきませんでした。 お時間がありましたら、何卒アドバイスのほどよろしくお願いいたします。

newwave2
質問者

補足

早々のご教示ありがとうございます。 申し訳ありません、DB操作も初心者と記述すべきでした。 私の検索方法が悪いのだとは思いますが、jsで探すとなかなか見つからなかったり メソッドをループさせたほうが早かったなどのHPがあり、行き詰っておりました。 こだわりは、DBの容量を肥大させないということだけです。 検索キーワード等、何かヒントがございましたら、どうかご教示願います。

関連するQ&A