【问题标题】:Importing fields from multiple columns in an Excel spreadsheet into a single row in Access将 Excel 电子表格中多列中的字段导入 Access 中的单行
【发布时间】:2013-04-25 20:58:29
【问题描述】:

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

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

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

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

变成这样:

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

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

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

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

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

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

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

【问题讨论】:

    标签: ms-access-2010


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      假设数据只是被更新。

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

      【讨论】:

      • 不知道为什么这被标记了。为我工作
      猜你喜欢
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      • 2014-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-08
      相关资源
      最近更新 更多