
こんにちは。Access 2003を使用しています。Accessのテーブルには10万件程度のデータがはいっています。
Excelを開き、1行目から順に読み取って、テーブルにインサート・アップデートをしていきます。
例えば、Excel A列にIDがあったとします。AccessのテーブルにそのIDがなければ、インサート、あればアップデートという仕組みにしています。
データ件数が増えてきて、今は10万件に対し、8万件がアップデートの対象です。処理が終わるのに物凄く時間がかかります。
何かよいアイディアはないでしょうか?例えば、こういった技術を使えばいいとか、こっちの技術を勉強して乗り換えたほうがいいよとかです。よろしくお願いします。
No.3ベストアンサー
- 回答日時:
ExcelをAccessにリンクしてリンクテーブル
とします。Accessのバージョンによっては
Excelは読み取りのみになりますが、この場合は
読み取りでいいのでそのままリンクします。
リンク方法は外部ファイルのテーブルをリンクする場合
と同じですが、ExcelのSheet名がテーブル名
になり、フィールド名はExcelで設定している
たとえば、A1、A2などにID、商品名などと
設定しているとそれをフィールド名として
設定できます。
ファイルから「外部データの取り込み」を
選択し、「テーブルのリンク」を選択し、
ファイルの種類をExcelに変更し、フォルダに
移動してExcelファイルを選択するとウィザードが
起動されます。
次に、クエリを作成します。たとえば、Excel
とAccessにID、商品名があるとして、
先に更新クエリを実行します。
UPDATE Tdata
INNER JOIN Sheet1
ON Tdata.ID=Sheet1.ID
SET Tdata.商品名=Sheet1.商品名
WHERE Tdata.ID=Sheet1.ID;
続いて、追加クエリを実行します。
INSERT INTO Tdata
SELECT * FROM Sheet1
WHERE ID NOT IN (SELECT ID FROM Tdata);
このような方法はどうでしょう。なお、
フィールドが他にある場合はクエリの
デザインビュー、あるいはSQL文の中で
追加してください。
なお、
実行時エラー「ファイルの共有ロック数が制限を超えています」
というエラーが出れば以下。
http://support.microsoft.com/kb/209940/

No.2
- 回答日時:
8万件のデータはExcelに記録されているのでしょうか?
それならば一旦Accessに読み込み(Accessのテーブルにする)してから追加クエリで処理すれば圧倒的に早くなるはずです。「一旦Accessに読み込み」時の時間は試したことがないですが、それほどかからないのでは?
No.1
- 回答日時:
上の内容を見る限りindexが付いていないような気がします。
AccessテーブルのID列にindexは付いていますか?
付いていなければ付けましょう。劇的に早くなる筈です。
付いていても遅いのであればAccessデータをSQL Serverに入れて試してみたらいかがでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- その他(Microsoft Office) PCを買い換えました。 今使っているノートパソコンが10年以上使っており新しく買い換えました。Win 5 2023/03/26 00:18
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- その他(データベース) 20万行あるデータを動かしたい 2 2023/06/13 15:21
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- その他(データベース) Microsoft Accessについて 1 2022/06/06 16:20
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
Accessで、複数のテーブルで随...
-
ACCESSのSQLで数値型に変換する...
-
SQLで条件指定結合をしたいがNU...
-
アクセスで消し込みがしたい
-
Accessレコードの追加や変更が...
-
ID列を含むテーブルコピー、編集
-
accessで指定期間の曜日カウン...
-
2つのテーブルを比較して一致し...
-
Accessでテーブルからテーブル...
-
AccessでExcel出力する際に「シ...
-
リンクテーブルを CopyObject ...
-
ACCESSのSQLで・・・
-
Accessクエリでの、LIKE条件
-
【Access】2つのテーブル 複数...
-
access2003で桐の表引きのよう...
-
Windows8、Access2013でのクエリ
-
ACCESSに同時アクセス(編集)を...
-
アクセスのテーブル間で同じ値...
-
Accessのテーブルをインターネ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
Accessでテーブルからテーブル...
-
Accessの追加クエリで既存のテ...
-
Accessでvlookupみたいなことは...
-
Accessクエリでの、LIKE条件
-
access テーブル内のレコード...
-
Accessレコードの追加や変更が...
-
2つのテーブルを比較して一致し...
-
ACCESSに同時アクセス(編集)を...
-
INSERT時にデータ登録とmaxの発...
-
デザインビューで、連結式 を...
-
ACCESSのSQLで数値型に変換する...
-
パススルークエリをテーブル作...
-
テーブル作成クエリで主キーを設定
-
3つの表を1つに縦に連結する
-
Accessで、複数のテーブルで随...
-
AccessでのNULLのレコードの表...
-
SQLで条件指定結合をしたいがNU...
-
ODBCで接続するとDBに変更/追加...
-
SQL: SELECT UNIONすると文字数...
おすすめ情報