Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Import 如何在从Excel导入的表中分配Access中的外键_Import_Ms Access 2010 - Fatal编程技术网

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

Import 如何在从Excel导入的表中分配Access中的外键,import,ms-access-2010,Import,Ms Access 2010,我将使用Access数据库而不是Excel。但我需要将数据从一个巨大的Excel工作表导入Access中几个预先准备好的规范化表中。在核心访问表中,我主要使用来自其他表的外键,当然,其他一些字段是文本或日期 我应该如何以最简单的方式执行导入?我无法直接执行导入,因为访问字段“Country”中没有美国字符串;表TBLContrices中必须有外键编号84。我考虑Excel中的DLOOKUP函数并替换FK的字符串。。。你知道更简单的方法吗 谢谢,Martin您没有提到如何将Excel数据导入多个A

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

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


谢谢,Martin

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

让我们举几个例子:

假设您将Excel数据导入到一个大的Access表中。还假设您的导入有三个字段需要为其获取密钥。 Access中已有多个控制表,如下所示: a。tblRegion:包含RegionCode,RegionName,即1=太平洋,2=北美,3=亚洲

b。TBL国家:包含国家代码、国家、地区,即84 |美国| 2

c。tblProductType:包含产品代码、产品类型,即车辆;电气;等等

d。假设导入的数据包含字段

以下是我将采取的步骤:

如果您的Excel文件中还没有保存键值的列,即84,请在导入之前添加这些列。或者在导入后,修改表以添加列。 为需要关联的每个关键字段创建“不匹配查询”。使用“查询向导”、“查找不匹配的查询向导”。这将显示键表中不匹配的所有导入数据,您需要更正这些值。i、 e:

选择tblFromExcel.Country、tblFromExcel.Region、tblFromExcel.ProductType、tblFromExcel.SomeData 从tblFromExcel左侧加入tblFromExcel上的TBLContry。[Country]=TBLContry。[CountryName] 其中tblcontry.CountryName为空

使用匹配值更新FK:

更新TBLContry TBLContry.CountryName=tblFromExcel.Country上的内部联接tblFromExcel 设置tblFromExcel.CountryFK=[CountryNbr]

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


使用DLOOKUP可能会导致性能问题,因此我会尽量避免。您说访问表是预先准备好的,所以我假设这意味着您定义了一些字段来保存键值,即84=U.S.,但您导入的数据不包含该值。假设您的键表的名称和ID都与84 | United一样,那么您可以进行一系列查询。首先找到任何不匹配的值;第二个连接匹配和更新键字段。是的,我的表已按您所述准备好。但是我在创建查询时有点迷失了方向。我应该如何设计查询以查找不匹配的值并连接匹配项?当然,我知道如何创建查询本身,但我不确定如何构造SQL语言。由于在“注释”块的范围内很难解释此解决方案,我将在几分钟后添加一个答案。您的Excel导入会不止一次吗?为了清楚起见,请更新您的问题,并举例说明一个现有Access表的格式/内容以及Excel文件中的内容。在一个访问表中,是否有Country=United States和FK=84?Excel有美国版还是只有84版?你假设所有的分数都正确:-我会试试,让你知道。谢谢