如何在从 Excel 导入的表中的 Access 中分配外键

Posted

技术标签:

【中文标题】如何在从 Excel 导入的表中的 Access 中分配外键【英文标题】:How to assign foreign keys in Access within imported table from Excel 【发布时间】:2015-01-04 02:30:30 【问题描述】:

我将使用 Access 数据库而不是 Excel。但我需要将数据从一张巨大的 Excel 工作表导入到 Access 中的几个预先准备好的规范化表中。在核心 Access 表中,我主要有来自其他表的外键(当然其他一些字段是文本或日期)。

我应该如何以最简单的方式执行导入?我无法直接执行导入,因为访问字段“国家”中没有“美国”字符串;必须有外键号。表 tblCountries 中的 84 个。我想到了Excel中的DLOOKUP函数,并为FK替换字符串……你知道更简单的方法吗?

谢谢你,马丁

【问题讨论】:

使用 DLOOKUP 会导致性能问题,所以我会尽量避免。您说 Access 表是预先准备好的,所以我假设这意味着您定义了字段来保存键值(即 84 = U.S.),但您导入的数据不包含该值。假设您的键表同时具有 NAME 和 ID(如 84 | United States),您可能会有一系列查询。首先找到任何不匹配的值;第二个加入匹配并更新关键字段。 是的,我的桌子已经按照您的描述准备好了。但是我在查询创建中有点迷失了。我应该如何设计查询来查找不匹配的值并加入匹配项? (当然我知道如何创建查询本身,但我不确定如何构建 SQL 语言)。 由于这个解决方案很难在“评论”块的范围内解释,我将在几分钟内添加一个答案。您的 Excel 导入是否会多次发生? 为了清楚起见,您能否更新您的问题并举例说明您现有 Access 表之一的格式/内容以及 Excel 文件中的内容。在一个 Access 表中是否有“Country = United States”和 FK =“84”? Excel 有“美国”还是只有“84”? 【参考方案1】:

您没有提到如何将 Excel 数据导入多个 Access 表中,因此我假设您会将整个 Excel 文件导入到一个大表中,然后从那里分解数据。我假设导入的数据可能与现有的访问密钥不匹配(即拼写错误、新值等),因此您需要找到这些数据以便进行更正。这将涉及创建一些“不匹配的查询”,然后是一些“更新查询”,最后您可以使用附加查询将数据从导入表中提取到最终的位置。使用您的示例,您已导入“Country = United States”,但您需要将该值与键“84”相关联?

让我们举几个例子:

    假设您将 Excel 数据导入到一个大型 Access 表中。还假设您的导入包含三个需要获取密钥的字段。 您在 Access 中已有多个控制表,类似于以下内容:

一个。 tblRegion:包含 RegionCode、RegionName(即 1=Pacific、2=North America、3=Asia、...)

b. tblCountry:包含 CountryCode、Country、Region(即 84 | United States | 2

c。 tblProductType:包含 ProdCode、ProductType(即 VEH | 车辆;ELE | 电气;等)

d。假设您导入的数据有字段

以下是我将采取的步骤:

    如果您的 Excel 文件还没有用于保存键值的列(即 84),请在导入之前添加它们。或者在导入之后,修改表格以添加列。

    为您需要关联的每个关键字段创建“不匹配查询”。 (使用“查询向导”、“查找不匹配的查询向导”。这将向您显示所有在您的键表中不匹配的导入数据,您需要更正这些值。即:

    选择 tblFromExcel.Country、tblFromExcel.Region、tblFromExcel.ProductType、tblFromExcel.SomeData FROM tblFromExcel 左连接 tblCountry ON tblFromExcel.[Country] = tblCountry.[CountryName] WHERE (((tblCountry.CountryName) 为空));

    使用匹配值更新 FK:

    更新 tblCountry 内连接 tblFromExcel ON tblCountry.CountryName = tblFromExcel.Country SET tblFromExcel.CountryFK = [CountryNbr];

    对所有其他关键字段重复上述不匹配/匹配。

【讨论】:

你假设所有点都是正确的 :-) 我会尝试并让你知道。谢谢。

以上是关于如何在从 Excel 导入的表中的 Access 中分配外键的主要内容,如果未能解决你的问题,请参考以下文章

将文件夹中的所有文件(所有 excel 文件)导入到 access 数据库中的单个表中

[非常急!!!]excel引用access表中的相关字段

将数据导入 Access 时如何跳过 Excel 中的前几行?

求助,如何将vc中MFC程序中数据导出到excel表中,如何将excel表中数据再导入到access数据库中?

access导入MSSQL 后查询表不能正常怎么办

access中无法导入excel外部数据