我在使用 MS SSIS 时遇到问题。我想下载东西并将其上传到数据库。我正在寻找最佳实践,或者我为什么会出错。
我用的是控制流(调用其他任务)。我下载的数据中有一列有空值。为此,我不能使用字符串或整数,否则它会因错误而退出(执行 sql 任务)。所以我使用对象。示例:变量 sBorderName 是对象,列中的数据放在这里。
我想将其上传到其他数据库表。例如,该列中也可以为 null。我无法上传对象变量,因为我得到的数据库类型不匹配。
当我尝试使用脚本任务 (C#) 消除 null-s 时,我使用以下命令: sBorderName 是对象 sBorderNameSafe 是字符串
if (Dts.Variables["User::sBorderName"].Value == null)
{
Dts.Variables["User::sBorderNameSafe"].Value = "NULL ERROR";
}
else
{
Dts.Variables["User::sBorderNameSafe"].Value =
(String)Dts.Variables["User::sBorderName"].Value;
}
我收到运行时错误,但没有提示哪里出了问题。错误源于 else 情况。我仔细检查了变量、范围、写/读权限等。
你能帮帮我吗?这有什么问题?如果你有更好的想法,解决问题的方法是什么?
西罗
更新:
Dts.Events.FireWarning(14, "Display Script", "sBorderName is:" + Dts.Variables["User::sBorderName"].Value, "", 0);
确实有效,它显示“sBorderName 是:”
然而,每次转换值都会因运行时错误而退出
(String)Dts.Variables["User::sBorderName"].Value
如何正确处理这一问题?
最佳答案
Convert.ToString(Dts.Variables("sBorderName ").Value)
如果变量有时可以为 null,就可以了。
关于c# - SSIS Null 处理,脚本任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11438093/