将Excel电子表格中多列的字段导入Access中的单行

时间:2013-05-01 19:48:15

标签: ms-access-2010

我们从作为Excel表单输出的在线表单中获取数据库的新数据。为了规范化数据库的数据,我想将多个列组合成一行。

示例,我想要这样的数据:

ID |家庭电话|手机|工作电话

1 .... 555-1234 ...... 555-3737 ... 555-3837

成为这个:

PhoneID | ID |电话号码|电话类型

1 ............ 1 ....... 555-1234 .......首页

2 ............ 1 ....... 555-3737 .......细胞

3 ............ 1 ....... 555-3837 ......工作

要导入数据,我有一个查找电子表格的按钮,然后运行一堆查询来添加数据。

如何编写查询以将此数据附加到现有表的末尾而不会结束重复记录?从网站上提取的数据全部存储并存档在Excel表格中,这些表格将在不删除旧数据的情况下进行更新(我们不想丢失这些额外的备份),因此每次导入时,我都需要忽略所有的数据。以前输入的数据。

我能够创建一个查询,从原始电子表格中列出正确的内容(我将外部电子表格输入Access中的非标准化表格进行测试)但是当我尝试将其附加到电话号码表时,它重复添加所有数据。我可以通过查询删除它以删除重复数据,但我宁愿不要那样离开它。

2 个答案:

答案 0 :(得分:1)

这个问题有几种可行的方法;您选择哪一个可能取决于数据集的大小相对于正在处理的更新数量。基本上,选择是: 1)向目标表添加唯一索引,以便Access拒绝添加重复记录。您需要处理可能的警告("由于索引违规而导致Access无法添加xxx记录"或类似)。 2)将传入的数据导入到临时表,然后将登台表外部连接到目标表,并仅追加目标表中的关键字段为空的记录(即,没有匹配的记录)目的地表)。

我过去曾使用过两种方法 - 我喜欢索引方法,因为它的简单性,我喜欢它的灵活性的分段方法,因为如果需要,你可以在附加数据之前对输入数据做很多事情。

答案 1 :(得分:-3)

您可以在存储查询数据的表上运行删除查询,然后运行导入。

假设数据仅被更新。

删除查询将删除所有记录,然后您可以运行导入以重新填充表 - 因此没有重复。