【问题标题】:Importing Excel spreadsheet data into existing Access DB将 Excel 电子表格数据导入现有 Access DB
【发布时间】:2011-06-08 01:43:06
【问题描述】:

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

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

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

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

SERVER101
* Adob​​e Reader 9
* BMC 补救措施用户 7.0
* HostExplorer 2008
* 微软 Office 2003
* 微软 Office 2007
* 记事本++

SERVER102
* Adob​​e Reader 9
* DameWare 迷你遥控器
* 微软 Office 2003
* Microsoft .NET Framework 3.5 SP1
* 甲骨文 9.2

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

Access DB 的设计非常简单:

应用
* APPLICATION_ID(自动编号)
* APPLICATION_NAME (varchar)

服务器
* SERVER_ID(自动编号)
* SERVER_NAME (varchar)

安装
* INSTALLATION_ID(自动编号)
* APPLICATION_ID(数字)
* SERVER_ID(编号)

【问题讨论】:

    标签: database excel-2003 ms-access-2003 import-from-excel


    【解决方案1】:

    如果无法导入现有表,我建议将“获取外部数据 --> 导入”中的数据导入新表。然后,运行 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 表上输入数据,除非您有单独的电子表格来描述服务器。

    【讨论】:

    • 我在编辑中添加的上述数据是否可以为您提供一些帮助?
    • 我的意思是结构数据、字段,如果您需要 JOIN 方面的帮助等。如果不是这样也可以。表格的实际数据并没有帮助。
    • 我已经在我的数据库中添加了字段列表。数字只是“长数字”(在合成主键的情况下是自动编号),字符串只是“varchar(255)”。
    • 我的第二个 SQL 语句出现语法错误。我写的语句如下: INSERT INTO [APPLICATION] (APPLICATION_NAME) FROM [GET_ALL_APPS] ([APPLICATION_NAME]) 。仅供参考,“GET_ALL_APPS”是我分配给第一个 SQL 语句的名称,即 SELECT 查询。