こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Accessへの大量データ登録

Access VBAの初心者です。

現在、VBAにてAccessのテーブルに100万レコード程度のデータを登録しようとしています。

最初は1レコード毎、SQLでinsertしようとしていたのですが、時間が想定以上にかかるので断念しました。

次に、CSVに一回書き出してDocmd.TransferTextすることを検討しましたが、読み込んだテーブルにselectした結果が安定しないため色々調べたところ、DoCmdは非同期で動くらしいです。
とすると次のクエリをかけるにはちゃんと全レコード読み込んだかを確認し、読み込んでいなければウェイトをかける処理を入れる必要があり、これも馬鹿馬鹿しいのでやりたくありません。

そこでお聞きしたいのですが、このような場合、どのような処理をするのが定石なのでしょうか。
皆様のお知恵をお借りできれば幸いです。
宜しくお願いいたします。

投稿日時 - 2015-12-10 22:48:13

QNo.9093832

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

こんにちは
書き出したCSVファイルにリンクを張るだけではダメなのでしょうか?
或いはリンクを張って、そのデータを必要なテーブルに追加クエリで追加するとか。

投稿日時 - 2015-12-16 14:37:06

ANo.2

現状において、出来ていて手元にあるデータ(のファイル形式)は、何ですか?
CSV、エクセル、その他DBなどのうち、どれですか?この大切なことを質問に書いてないのはおかしくないですか。100万件ということなので、今からや最近行った手入力のデータではなく、事業系の(商売・会社・団体がらみの)の本番処理の後の、お下がり(メインシステムからもらうデータなど)の(EUC用の)データではないのですか。
達成後はアクセスに入れて、メインは主に何をするのですか。分析?照会用?
ーー
一番歴史的に早くできた方式の、下記記事による方法のデータ処理を試してはどうですか。
複雑な処理や、データため込みをしないので、単純といえる分、読み込みや書き込み処理は早いかも。
また100万件を適当に数個に原データを分割して、1つづつ処理すると、よいことがあるかも。
http://vba-geek.jp/blog-entry-203.html
CSVファイルを順次読んで、mdb(質問以バージョンも書いてないのでmdb)に「レコード」処理的(この意味は分かる?)に書きこんでゆくやり方です。(SQLのインサートやアクセスのインポートに頼らないやり方)
ーー
mdbについて、バージョンとの関連で
https://support.office.com/ja-jp/article/Access-2007-%25E3%2581%25A7%25E4%25BD%25BF%25E7%2594%25A8%25E3%2581%258C%25E6%258E%25A8%25E5%25A5%25A8%25E3%2581%2595%25E3%2582%258C%25E3%2582%258B%25E3%2583%2595%25E3%2582%25A1%25E3%2582%25A4%25E3%2583%25AB%25E5%25BD%25A2%25E5%25BC%258F-a9530032-e4bc-4116-acf7-b204833cf73b?ui=ja-JP&rs=ja-JP&ad=JP&fromAR=1

投稿日時 - 2015-12-11 20:51:00

お礼

回答ありがとうございます。

1件毎に追加していくのは非常に時間がかかり耐えられないため、一括での読み込みを検討しています。

いずれにせよ、アドバイスありがとうございました。

投稿日時 - 2015-12-11 22:04:49

ANo.1

>SQLでinsertしようとしていた・・
ということなのでデータの取得は出来ているのでしょうから
それを追加クエリ Or テーブル作成クエリ(用途にあった方)に変更してください。

DAOかADOのExecuteメソッドで
currentdb.Execute (SQL文 Or クエリ名)
currentproject.Connection.Execute (
Executeでしたら処理が終了するまで次に行くことはありません。

投稿日時 - 2015-12-11 15:18:24

お礼

回答ありがとうございます。

1レコード毎、AddNewとかで更新するとかなり遅くて実用に耐えないため、CSVで一括読み込みできないか検討しています。

ありがとうございました。

投稿日時 - 2015-12-11 22:03:20

あなたにオススメの質問