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

时间:2013-10-03 14:23:19

标签: c# sql-server ssis

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

  1. 建立SQL Server连接
  2. 将SQL Server表的全部内容读入DataTable,或逐行处理并导出到新表(不确定使用哪种方法......)
  3. 搜索一行中的每一列,如果该行的长度为1且值为“ - ”,请将短划线替换为NULL。它们的关键在于我不想声明每个列名。
  4. 然后将记录写回另一个SQL Server表。
  5. 我是C#的新手,所以我正在寻找最简单的方法。

    谢谢!

1 个答案:

答案 0 :(得分:1)

SSIS做你所描述的方法是

  1. 将OLE DB连接管理器添加到指向源服务器的程序包
  2. 将数据流任务添加到您的Contro Flow
  3. 编写一个SELECT语句,用于拉回符合条件的列。 SELECT col1, col2 FROM dbo.MyTable T WHERE T.col1 = '-' OR T.col2 = '-';实际执行情况可能有所不同。将该查询放在OLE DB源组件
  4. 添加派生列组件以将 - 转换为NULL值
  5. 添加OLE DB目标以写入新表
  6. 然而,更好的方法是不将这些数据存储起来,并在将其放入表格之前保持清洁。但是,我可能会考虑使用执行SQL任务来触发查询来清理服务器上的数据。无需逐行处理。您描述了集合(长度为1且值为-的任何内容),因此请修复集合(UPDATE T SET col1 = NULLIF(Col1, '-'), ... FROM dbo.MyTable T