gpt4 book ai didi

sql-server - TryParse SSIS 忽略源行

转载 作者:行者123 更新时间:2023-12-03 16:47:48 27 4
gpt4 key购买 nike

我有一个序列化代码,在这段代码中有一些数值,在解析时代表一个日期。

For example, 011756420176654 
*Note* array index may be off
Substring(1,2) = 01
Substring(3,2) = 17

我试图忽略该行,而不替换原始行。我有一个派生列,并在该列中执行此操作。

(dt_date)(Substring([My Code], 1, 2) + "-" + Substring([My Code], 3, 2) + (dt_str,10,1252)datepart("year",getdate()))

我在这里的目的是配置我的错误输出以在派生列中的“TryParse”逻辑失败时忽略 [My Code] 字段。我知道如果我正在传递派生列,那么在配置上选择忽略将传递 null,但问题是我试图(出错时)忽略源行并将其作为 null 传递(即 [我的代码])。

一旦此命中进入数据库,另一个进程就会使用它并尝试解析日期。它不会在空值上失败,所以我想在允许记录通过或将其设置为空之前验证本质上是“是日期”逻辑。

编辑:根据 Keith 的解决方案,我想到了这个。我在访问输出缓冲区时遇到问题,但在一些 MSDN 语法之后,我想出了以下完美运行的方法。

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
DateTime dateValue;
string test = Row.ReceiptCode.Substring(0, 2) + "/" + Row.ReceiptCode.Substring(2, 2) + "/" + DateTime.Now.Year.ToString();

if (DateTime.TryParse(test, out dateValue) && Row.ReceiptCode.Length ==16)
{

Output0Buffer.AddRow();

Output0Buffer.EndDate = Row.EndDate;
Output0Buffer.Q10 = Row.Q10;
Output0Buffer.Q8 = Row.Q8;

Output0Buffer.ValidatedReceipt = Row.ReceiptCode;
}
else
{
Output1Buffer.AddRow();

Output1Buffer.EndDate = Row.EndDate;
Output1Buffer.Q10 = Row.Q10;
Output1Buffer.Q8 = Row.Q8;
Output1Buffer.Error = Row.ReceiptCode;
}
}

最佳答案

我会使用脚本转换:

添加一个输出列(转换日期)并检查 [My Code] as read:

这是您的代码:

string test = Row.[My Code].Substring(1,2) + "/" + Row.[My Code].Substring(3,2)+"/" + DateTime.Now.Year.ToString();

if (DateTime.TryParse(test, out dateValue))
{Row.convDate = dateValue; }

关于sql-server - TryParse SSIS 忽略源行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55184287/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com