2013-05-01 101 views
0

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

例如,我想数据是这样的:

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

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

要成为这样的:

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

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

2 ....... ..... 1 ....... 555-3737 .......单元格

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

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

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

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

回答

1

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

我以前使用过这两种方法 - 我喜欢索引方法,因为它的简单性,我喜欢它的灵活性的分段方法,因为如果需要的话,您可以在传入数据之前做很多事情。

-3

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

假设数据只被更新。

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

+0

不知道为什么这已被标记。适用于我 – rob 2014-08-20 09:19:50

相关问题