2

8ギガのRAMを搭載したWindows 7(64ビットWindows)マシンで32ビットAccess 2010を使用して、2つのテーブルを1つにマージしようとしていますLEFT JOIN

最初のテーブルには ~5Mn (重複のあるインデックス) のレコードが含まれ、2 番目のテーブルには ~600K (重複なし) のレコードが含まれます。

基本的に、最初のテーブルは、2 番目のテーブルで利用可能なフィールドからの情報で補完したいベース テーブルです。大きなテーブルの一部のエントリが小さなテーブルに一致しないため 、LEFT JOINnotを実行しており、それらを空白として表示する必要がありますINNER JOIN

クエリを選択クエリとして実行すると、正確な目的の結果が得られます。クエリに変更して保存しようとするとCREATE TABLE、エラーが発生します。

Cannot open database. It may not be a database that your application recognizes, or the file may be corrupt

これに対する解決策を探しましたが、それらはすべて破損したファイルを指していますが、何かが足りないと感じています。

クエリは次のとおりです。

SELECT [Key&Gov_LL_Bills].Accs_Meth_Num, [Key&Gov_LL_Bills].Acct_Num,
       [Key&Gov_LL_Bills].Bill_Stmt_Start_Dt, [Key&Gov_LL_Bills].Bill_Cycle_Id,          
       [Key&Gov_LL_Bills].Service_Chrg_Rev, [KA LL Active Services].NAME, 
       [KA LL Active Services].Party_Identification_Num, 
       [KA LL Active Services].Accs_Meth_Srv_Type_Name, 
       [KA LL Active Services].City_Name, 
       [KA LL Active Services].Accs_Meth_Srv_Type_Cd, 
       [KA LL Active Services].party_segment_type_cd 

       INTO test

       FROM [Key&Gov_LL_Bills] LEFT JOIN [KA LL Active Services] 
       ON 
       [Key&Gov_LL_Bills].Accs_Meth_Num = [KA LL Active Services].Accs_Meth_Num;"
4

1 に答える 1

0

さらに調査と試行錯誤を重ねた結果、これはメモリの問題であると確信しました。

したがって、誰かが同じ問題を抱えていて、64 ビット アクセスにアップグレードしたり、SQL サーバーを作成したりする時間やリソースがない場合は、非常に簡単な回避策があります。

クエリは選択モードで実行されるため、vba を使用してクエリ結果を区切り.txtファイルにエクスポートし、元のデータベースまたは新しいデータベースにテーブルとして読み戻すことができます。

探している人にとっては、それを行うための vba コードは非常に簡単です。

Sub exportQuery2Text()

DoCmd.TransferText acExportDelim, "", "mapProducts2Bills",_
"[filepath].txt", True

End Sub

これが役立つことを願っています

乾杯

于 2013-07-29T13:54:40.320 に答える