2012-01-16 76 views
1

我是一个SSIS的完整新手。如何验证列导入到数据库之前

我有一个c#/ sql服务器的背景。

我想知道在数据进入数据库之前是否可以验证数据。我从|(管道)分隔文本文件中抓取文本。

例如,如果某个数据点是null,然后将其更改为0或如果特定数据点的长度为0,然后换"nada"

我不知道这对SSIS来说是否可行,但如果您能指出我正确的方向,那将是最有帮助的。

回答

5

任何事情都可以与SSIS!

在您的平面文件数据源之后,使用派生列转换。派生一个新的列,其表达式如下所示。

ISNULL(ColumnName)? “nada”:ColumnName

然后在您的数据源目标中使用这个新列。

希望它有帮助。

+0

谢谢我如何将C#代码插入到ssis中? – 2012-01-18 17:24:33

+1

使用工具箱中的“脚本任务”。如果要为集合的每一行编写脚本,请使用“Foreach ADO Enumerator”并将值作为变量传递给“脚本任务”。然后,您可以使用“Dts.Variables [”variableName“]。Value”来访问主要方法中的变量。 – Christo 2012-01-18 23:22:02

+1

仅供参考 - 我上面的原始答案不是c#代码,它是SSIS表达式语法。请参阅此链接了解更多信息。 http://msdn.microsoft.com/en-us/library/ms140206.aspx – Christo 2012-01-18 23:32:44

1

我不知道,如果你使用SSIS是死心塌地,但我一般用于文本文件的数据导入到数据库的基本方法通常有两个阶段:

  1. 使用BULK INSERT加载将该文件转换为数据库服务器上的临时登台表;该临时表中的每个列都可以合理容忍它们包含的数据,如varchar(max)
  2. 编写验证例程以更新临时表中的数据,并根据需要仔细检查以确保格式正确,然后将列转换为最终格式并将行推送到目标表中。

我喜欢这种方法,主要是因为BULK INSERT可能对它吐出的错误有点神秘;通过临时登台表,与通过文本文件生根相比,查看数据集并迅速修复错误要容易得多。

相关问题