代码之家  ›  专栏  ›  技术社区  ›  p.campbell

SQL Server:从Excel导入,只需要新条目

  •  1
  • p.campbell  · 技术社区  · 15 年前

    任务是让SQL Server读取Excel电子表格,并仅将新条目导入表中。该实体称为“提供者”。

    考虑这样的Excel电子表格:

    它的目标表如下所示:

    任务是:

    • 使用2008 Express工具集
    • 导入到SQL Server 2000中的现有表中
    • 表中存在数据!增量标识为pk。这在另一个表中用作fk,并进行了引用。
    • 仅导入电子表格中的新行!
    • 忽略电子表格中不存在的行

    问题: 如何使用SQL 2008工具集(可能是导入和导出向导)来实现此目标?我怀疑我需要“编写一个查询来指定要传输的数据”。

    问题在于,我找不到查询,因为工具将生成以进行微调。

    只将新条目导入表。实体被调用 供应商 .

    考虑这样的Excel电子表格:

    alt text

    其目标表如下:

    alt text

    任务是:

    • 使用2008 Express工具集
    • 导入到SQL Server 2000中的现有表中
    • 表中存在数据!增量标识为pk。这在另一个表中用作fk,并进行了引用。
    • 只导入电子表格中的新行!
    • 忽略电子表格中不存在的行

    问题: 如何使用SQL 2008工具集(可能是导入和导出向导)来实现此目标?我怀疑我需要“编写一个查询来指定要传输的数据”。

    问题在于,我找不到查询,因为工具将生成该查询以进行微调。

    2 回复  |  直到 14 年前
        1
  •  3
  •   AdaTheDev    15 年前

    我可能要做的是将Excel数据批量加载到数据库中的一个单独的临时表中,然后在主表上运行insert以复制不存在的记录。

    例如

    INSERT MyRealTable (ID, FirstName, LastName,.....)
    SELECT ID, FirstName, LastName,.....
    FROM StagingTable s
        LEFT JOIN MyRealTable r ON s.ID = r.ID
    WHERE r.ID IS NULL
    

    完成后,删除临时表。

        2
  •  0
  •   Rank Beginner    14 年前

    您可以在加载前在该阶段表上运行一些更新,以便在需要时清理它。更新集名称=rtrom(ltrim(name)) 例如,从.stage.table