0

我正在使用 Access 从一系列结构相同的 SQLite 3 数据库中导入数据。我有一个“Import.db”的系统/用户 DSN。我的 Access DB 已将表链接到 Import.db 中的表。

我的目标是通过链接表将数据导入到 Access 表中,然后删除 Import.db,然后将下一个 SQLite3 DB 复制到相同的位置并将其命名为 Import.db,然后继续重复该过程直到全部导入。

我采用这种方法是因为我不知道如何动态创建 DSN 并为 SQLite3 dbs 链接表。SQL Server,是的,但不是 SQLite3。所以我想,只需使用相同的 DSN 但更改实际文件。

问题是,在打开我的 Access DB 并打开链接表之后,Access 在 Import.db 上创建了一个 Windows 文件锁。所以我不能删除和替换它。相反,我可以导入一个,然后关闭 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 回答