0

Access を使用して、すべて同じ構造の一連の SQLite 3 データベースからデータをインポートしています。「Import.db」のシステム/ユーザー DSN があります。私の Access DB は、テーブルを Import.db のテーブルにリンクしています。

私の目標は、リンクされたテーブルを介して Access テーブルにデータをインポートし、Import.db を削除してから、次の SQLite3 DB を同じ場所にコピーして Import.db と呼び、すべてがインポートされるまでプロセスを繰り返し続けることです。

DSN をオンザフライで作成し、SQLite3 データベースのテーブルをリンクする方法がわからないため、このアプローチを採用しました。SQL Server はありますが、SQLite3 ではありません。だから私は、同じDSNを使用するだけで、実際のファイルを変更すると考えました。

問題は、Access DB を開いてリンク テーブルを開いた後、Access が Import.db に Windows ファイル ロックを作成することです。そのため、削除して置き換えることはできません。代わりに、1 つをインポートしてから、Access を閉じ、Access を再度開いて、繰り返すことができます。それほど暑くありません。

提案?

4

1 に答える 1

0

リンクされたテーブルの接続文字列は、次の方法で取得できます。

Debug.Print CurrentDb.TableDefs("MyLinkedTable").Connect

これで、リンク テーブルなしでインポートするクエリを作成するために必要な情報が得られました。

あなたは次のようなものを得るかもしれません:

ODBC;DSN=SQLite3;Database=Z:\Docs\Import.db;StepAPI=0;SyncPragma=NORMAL;
NoTXN=0;Timeout=;ShortNames=0;LongNames=0;NoCreat=0;NoWCHAR=0;
FKSupport=0;JournalMode=;OEMCP=0;LoadExt=;BigInt=0;

しかし、おそらくそのほとんどは必要ないので、次のようにします。

sODBC = "[ODBC;DSN=SQLite3;Database=Z:\Docs\Import.db;]"
''Create table query, but append and update are also easy enough
sSQL = "SELECT * INTO SQLite_Import FROM " & sODBC & ".SQLiteTableNameHere"

CurrentDb.Execute sSQL, dbFailOnError
于 2011-12-05T10:42:36.757 に答える