用于清理 SQL 记录的 SSIS C# 脚本任务

本文关键字:SSIS 脚本 任务 记录 SQL 用于 | 更新日期: 2023-09-27 18:33:41

我正在尝试在SSIS中拼凑一个C#脚本来执行以下步骤:

  1. 建立 SQL 服务器连接
  2. 要么将 SQL Server 表的全部内容读入DataTable,要么逐行处理并导出到新表(不确定使用哪种方法......
  3. 搜索行中的每一列,如果该行的长度为 1 且值为"-",则将短划线替换为 NULL。 他们在这里的关键是我不想声明每个列名。
  4. 然后将记录写回另一个 SQL Server 表。

我是 C# 的新手,所以我正在寻找最简单的方法来做到这一点。

谢谢!

用于清理 SQL 记录的 SSIS C# 脚本任务

执行您所描述的操作的 SSIS 方法是

  1. 将 OLE DB 连接管理器添加到指向源服务器的包中
  2. 将数据流任务添加到您的 Contro 流中
  3. 编写一个 SELECT 语句,用于拉回符合条件的列。 SELECT col1, col2 FROM dbo.MyTable T WHERE T.col1 = '-' OR T.col2 = '-'; 实际实施可能会有所不同。将该查询放在 OLE DB 源组件中
  4. 添加派生列组件以将 - 转换为 NULL 值
  5. 添加要写入新表的 OLE DB 目标

但是,更好的方法是不存储此数据,并在将其放入表中之前保持其清洁。除此之外,我可能会考虑使用执行SQL任务来触发查询以清理服务器上的数据。无需逐行处理。你描述集合(任何长度为 1 且值为 - 的集合),所以固定集合 ( UPDATE T SET col1 = NULLIF(Col1, '-'), ... FROM dbo.MyTable T