如何解决列名称未正确加载SSIS中的C#脚本
我是使用SSIS进行C#脚本编写的新手,所以我不确定为什么会这样。我正在使用脚本组件来读取一些文件。我的带有_“下划线”的列名显示不正确 https://cloud.google.com/ai-platform/notebooks/docs/iam
错误代码是这个。 严重性代码说明项目文件行抑制状态 错误CS1061'Output0Buffer'不包含'funded_amnt'的定义,并且找不到可以接受的扩展方法'funded_amnt'接受类型为'Output0Buffer'的第一个参数(您是否缺少using指令或程序集引用?)
解决方法
当您将列添加到脚本任务时,我不知道规则不定,但是,数据流列名与脚本任务中的可用名称之间会发生转换。考虑到据报告数据流中每个带有下划线的列都是错误的,我猜测这是列名称中的有效字符之一,不允许在缓冲区的字段名称中使用。
如果我要猜测的话,下划线会被消除,因为脚本中的每一列都添加了_IsNull属性,也许多个下划线会使逻辑复杂化。
给出源查询
SELECT 1 AS col1,2 AS col_underscore_2;
我在数据流任务中得到了两列,分别为col1
和col_underscore_2
。将两者都添加到脚本任务中
这是输入缓冲区(BufferWrapper.cs)的自动生成的结果
public class Input0Buffer: ScriptBuffer
{
public Input0Buffer(PipelineBuffer Buffer,int[] BufferColumnIndexes,OutputNameMap OutputMap)
: base(Buffer,BufferColumnIndexes,OutputMap)
{
}
public Int32 col1
{
get
{
return Buffer.GetInt32(BufferColumnIndexes[0]);
}
}
public bool col1_IsNull
{
get
{
return IsNull(0);
}
}
public Int32 colunderscore2
{
get
{
return Buffer.GetInt32(BufferColumnIndexes[1]);
}
}
public bool colunderscore2_IsNull
{
get
{
return IsNull(1);
}
}
new public bool NextRow()
{
return base.NextRow();
}
new public bool EndOfRowset()
{
return base.EndOfRowset();
}
}
值得注意的是,它会将col_underscore_2
修改为内部列名colunderscore2
。如果要查看相同的内容,请在解决方案资源管理器中双击BufferWrapper.cs或将光标放在Input0Buffer
的{{1}}上,然后按F12(转到“定义”)
如果要查看自动生成的列,
我认为缓冲区名称也有类似的逻辑。
我假设您正在尝试自动生成脚本任务,并且需要考虑这一点。另外,如果LendingClassRow可以为null,则需要使用类似
的逻辑public override void Input0_ProcessInputRow(Input0Buffer Row)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。