0

我设计了一个带有 3 个表的 Access 2003 DB:应用程序、服务器和安装程序。APPLICATIONS 和 SERVERS 表中的记录由合成主键唯一标识(在 Access 中,“自动编号”)。INSTALLATIONS 表本质上是 APPLICATIONS 和 SERVERS 之间的映射表:它是哪些应用程序安装在哪些服务器上的记录列表。INSTALLATIONS 表中的记录也由合成主键标识,它由各自表中记录的 APPLICATION_ID 和 SERVER_ID 组成。

我有一个 Excel 2003 电子表格,我想导入到这个数据库中,但事实证明这很困难。电子表格由多个选项卡/工作表组成,每个选项卡/工作表代表一个服务器,其中包含自己的已安装应用程序列表。我不确定如何进行导入 - Access 中的“获取外部数据 --> 导入”功能有一个导入“在现有表中”选项,但它是灰色的。我也不确定如何建立应用程序和服务器之间的关系,以便将记录导入 INSTALLATIONS 表。

我以前曾在 Access DB 文件中添加一些安全性。我想我删除了所有东西,但也许我没有,这导致了问题?

Excel 电子表格中的一些示例数据:

SERVER101
* Adob​​e Reader 9
* BMC Remedy User 7.0
* HostExplorer 2008
* Microsoft Office 2003
* Microsoft Office 2007
* Notepad++

SERVER102
* Adob​​e Reader 9
* DameWare Mini Remote Control
* Microsoft Office 2003
* Microsoft .NET Framework 3.5 SP1
* Oracle 9.2

SERVER103
* AWDView
* 额外!个人客户端 32 位
* Microsoft Office 2003
* Microsoft .NET Framework 3.5 SP1
* Snagit 9.1
* WinZip 12.1

Access DB 的设计非常简单:

APPLICATION
* APPLICATION_ID(自动编号)
* APPLICATION_NAME(varchar)

SERVER
* SERVER_ID(自动编号)
* SERVER_NAME(varchar)

INSTALLATION
* INSTALLATION_ID(自动编号)
* APPLICATION_ID(编号)
* SERVER_ID(编号)

4

1 回答 1

0

如果导入到现有表中不起作用,我建议将数据从“获取外部数据--> 导入”导入到新表中。然后,运行 INSERT INTO 查询以根据需要将数据插入到表中。

如果您以这种方式导入它们,则必须为每个工作表进行一次导入。

如果您发布一些结构数据,那么我可以帮助处理应用程序和服务器之间的关系。

编辑:SQL 查询

因此,要将应用程序导入 APPLICATION 表,首先进行查询:

选择 *
从 [SERVER101]
联盟
选择 *
从 [SERVER102]
联盟
选择 *
来自 [SERVER103]

然后运行 ​​INSERT INTO:

插入
[APPLICATION](APPLICATION_NAME)
FROM [查询]([字段名称])

要填充 INSTALLATION 表,为每个服务器使用一个表,您真的不需要很多连接。对于 SERVER101 表,这是我认为可行的方法:

插入
[安装](APPLICATION_ID、SERVER_ID、?其他字段?)
FROM [APPLICATION](APPLICATION_ID,101,?其他字段?)
内连接 [SERVER101]
在 [SERVER101].[应用程序名称] = [应用程序].[应用程序名称]

我只会在 SERVER 表上输入数据,除非你有一个单独的电子表格来描述服务器。

于 2011-01-12T19:36:03.367 回答