我们从作为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中的非标准化表格进行测试)但是当我尝试将其附加到电话号码表时,它重复添加所有数据。我可以通过查询删除它以删除重复数据,但我宁愿不要那样离开它。
答案 0 :(得分:1)
这个问题有几种可行的方法;您选择哪一个可能取决于数据集的大小相对于正在处理的更新数量。基本上,选择是: 1)向目标表添加唯一索引,以便Access拒绝添加重复记录。您需要处理可能的警告("由于索引违规而导致Access无法添加xxx记录"或类似)。 2)将传入的数据导入到临时表,然后将登台表外部连接到目标表,并仅追加目标表中的关键字段为空的记录(即,没有匹配的记录)目的地表)。
我过去曾使用过两种方法 - 我喜欢索引方法,因为它的简单性,我喜欢它的灵活性的分段方法,因为如果需要,你可以在附加数据之前对输入数据做很多事情。
答案 1 :(得分:-3)
您可以在存储查询数据的表上运行删除查询,然后运行导入。
假设数据仅被更新。
删除查询将删除所有记录,然后您可以运行导入以重新填充表 - 因此没有重复。