用于清理 SQL 记录的 SSIS C# 脚本任务
本文关键字:SSIS 脚本 任务 记录 SQL 用于 | 更新日期: 2023-09-27 18:33:41
我正在尝试在SSIS中拼凑一个C#脚本来执行以下步骤:
- 建立 SQL 服务器连接
- 要么将 SQL Server 表的全部内容读入
DataTable
,要么逐行处理并导出到新表(不确定使用哪种方法...... - 搜索行中的每一列,如果该行的长度为 1 且值为"-",则将短划线替换为 NULL。 他们在这里的关键是我不想声明每个列名。
- 然后将记录写回另一个 SQL Server 表。
我是 C# 的新手,所以我正在寻找最简单的方法来做到这一点。
谢谢!
执行您所描述的操作的 SSIS 方法是
- 将 OLE DB 连接管理器添加到指向源服务器的包中
- 将数据流任务添加到您的 Contro 流中
- 编写一个
SELECT
语句,用于拉回符合条件的列。SELECT col1, col2 FROM dbo.MyTable T WHERE T.col1 = '-' OR T.col2 = '-';
实际实施可能会有所不同。将该查询放在 OLE DB 源组件中 - 添加派生列组件以将 - 转换为 NULL 值
- 添加要写入新表的 OLE DB 目标
但是,更好的方法是不存储此数据,并在将其放入表中之前保持其清洁。除此之外,我可能会考虑使用执行SQL任务来触发查询以清理服务器上的数据。无需逐行处理。你描述集合(任何长度为 1 且值为 -
的集合),所以固定集合 ( UPDATE T SET col1 = NULLIF(Col1, '-'), ... FROM dbo.MyTable T
)