0

我们从以 Excel 表格形式输出的在线表格中获取数据库的新数据。为了规范化数据库的数据,我想将多列合并为一行。

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

身份证 | 家庭电话 | 手机 | 工作电话

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

变成这样:

电话号码 | 身份证 | 电话号码 | 电话类型

1 ...... 1 ....... 555-1234 ....... 主页

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

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

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

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

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

4

2 回答 2

1

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

过去我使用过这两种方法——我喜欢索引方法的简单性,我喜欢暂存方法的灵活性,因为如果需要,您可以在附加数据之前对传入的数据做很多事情。

于 2014-03-25T14:50:13.140 回答
-3

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

假设数据只是被更新。

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

于 2014-08-20T08:37:43.400 回答