你好我是SSIS新手,我接收SSIS iam创建的文本文件使用向导将其加载到oracle表但在文本文件中有列包含String NULL而其他包含空字符串而不是零长度列是有的一种自动方式,使这些值成为表中的实际空值,或者我是否必须为每个案例创建派生列
谢谢,
答案 0 :(得分:7)
在用于Visual Studio 2015 / SQL Server 2016的SQL Server数据工具的SSIS项目中,解决空列处理的方法似乎是通过平面文件源组件的属性(不确定是否仅限空间)列限定):
答案 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。