SSIS处理NULL和空格

时间:2011-04-05 11:19:39

标签: ssis

你好我是SSIS新手,我接收SSIS iam创建的文本文件使用向导将其加载到oracle表但在文本文件中有列包含String NULL而其他包含空字符串而不是零长度列是有的一种自动方式,使这些值成为表中的实际空值,或者我是否必须为每个案例创建派生列

谢谢,

5 个答案:

答案 0 :(得分:7)

在用于Visual Studio 2015 / SQL Server 2016的SQL Server数据工具的SSIS项目中,解决空列处理的方法似乎是通过平面文件源组件的属性(不确定是否仅限空间)列限定):

  1. 右键单击平面文件源,然后选择显示高级编辑器
  2. 选择组件属性标签。
  3. RetainNulls 属性设置为True(默认为False)。
  4. RetainNulls Property

答案 1 :(得分:4)

如果要将值转换为null,如果输入值为空/空,则可以尝试(假设数据类型为string / varchar):

LEN(TRIM([ColumnName]))==0 ? NULL(DT_WSTR, 10) : [ColumnName] 

答案 2 :(得分:2)

如果您正在使用SSIS 2008,那么还有来自Tactek Data Systems的Null Manager组件。它不是免费的,但它相当便宜 - 比如10美元。 (www.tactek.com)。您可以将空字符串转换为空值,将空值转换为空字符串,并将空值转换为“填充”值,例如“未知”或“NA”。

答案 3 :(得分:2)

我遇到了同样的问题,您可以使用脚本组件并添加下面的代码来遍历所有列,并将每个文本null替换为实际的空值...

foreach (PropertyInfo dataColumn in Row.GetType().GetProperties())
{
    if (dataColumn.Name.ToLower().EndsWith("_isnull") == false && dataColumn.PropertyType == typeof(string))
    {
            object objValue = dataColumn.GetValue(Row, null);

            if (objValue != null && objValue.ToString() == 'NULL')
            {
                 dataColumn.SetValue(Row, null, null);
            }
    }
}

代码说明是 here

答案 4 :(得分:-1)

我认为使用SSIS提供的标准平面文件源无法做到这一点。为此,我使用了一个名为Delimited File Source的自定义组件,可在此处下载:http://ssisdfs.codeplex.com/。正如其名称所示,它在处理分隔文件方面也要好得多,而且它可以选择将空字符串视为NULL。

enter image description here