【问题标题】:SSIS Unique column?SSIS 唯一列?
【发布时间】:2018-08-25 21:50:37
【问题描述】:

您好,很抱歉新手问题。

我有一个非常简单的 SSIS 项目,可以从文件中导入客户姓名。现在一切正常,但是有多个同名条目,我不想重复。

这很好用,但是它会填充重复项:

CREATE TABLE [SLSales].[dbo].[Customer] (
id           BIGINT IDENTITY NOT NULL PRIMARY KEY,
name         NVARCHAR(100)   NOT NULL 
);

但是,当我尝试使用它时:

CREATE TABLE [SLSales].[dbo].[Customer] (
id           BIGINT IDENTITY NOT NULL PRIMARY KEY,
name         NVARCHAR(100)   NOT NULL UNIQUE
);

所有记录都失败,我收到一个神秘的 -1071607685 错误代码。

【问题讨论】:

  • 你能给出一些示例数据和预期的输出
  • 我不得不猜测它在唯一约束上失败并回滚了所有内容。
  • 您关于回滚的事情是绝对正确的。我尝试了没有重复值的材料,后一张表一切正常。现在下一个问题是,如果 SSIS 在存在重复数据时回滚所有数据,那么防止它们的最明智的做法是什么?
  • 我很好奇是否有更好的答案,但我(仓促实施)的解决方案是导入您的第一个表(没有约束,可以是临时表),然后运行一个 sql 语句使用 where not in 子句将行从第一个表移到第二个表中,以消除重复记录。

标签: sql ssis unique


【解决方案1】:

SSIS 方法是:

  1. 从源加载数据
  2. GROUP BY [name] 在您的情况下,因为您可以在文件中使用相同的名称
  3. 运行查找(Match 和 NoMatch 输出)
  4. 插入不匹配
  5. 更新匹配项(或者在您的情况下您可能只想忽略)

【讨论】:

    猜你喜欢
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    相关资源
    最近更新 更多