SSIS 条件拆分拒绝文件
SSIS Conditional Split Reject files
我想将数据迁移到目标 table。
但是,我想为空值和大小超过20个字符的值制作一个拒绝文件。就像我对条件拆分所做的那样?
我这样做了,但它不起作用:
"if len(mail)>10 caractère"
我会将此值导出到拒绝文件
请问我该怎么做?
设计
您可以直接在有条件的拆分中执行此操作,但我建议不要这样做。相反,计算派生列中的布尔值 (true/false) 条件并将其添加到您的数据流中。然后,如果你得到意想不到的结果,你可以在 Derived Column 步骤和 Conditional Split
之间添加一个数据查看器
实施
将派生列添加到数据流中。添加一个名为 BadMail
的新列。如果它是真的,那么我们将路由到坏文件。如果为真,它将继续前往目的地。
SSIS 的表达式语言将使用三元运算符(test) ? true_condition : false_condition
我要测试 null ISNULL(mail)
、长于 20 len(mail) > 20
和零长度 len(mail) == 0
。
如果这三个条件中的任何一个为真,那么||
是合乎逻辑的,那么我们需要将BadMail设置为true
(ISNULL(mail) || len(mail) > 20 || len(mail) == 0) ? true : false
您可以简化它以消除三元运算符,但我发现在这些情况下明确表达我的意图很有帮助。作为旁注,如果您仍然遇到意外结果的问题,请添加前面的派生列转换并为每个条件(空、0 或大于 20 个字符)添加一个列,然后您可以单独检查它们。
现在,我们添加条件拆分
此处的表达式只是我们的新列 BadMail
,它将路由到输出路径 1 或您命名的任何内容。好的邮件会通过默认的输出路径。
我想将数据迁移到目标 table。 但是,我想为空值和大小超过20个字符的值制作一个拒绝文件。就像我对条件拆分所做的那样? 我这样做了,但它不起作用:
"if len(mail)>10 caractère"
我会将此值导出到拒绝文件
请问我该怎么做?
设计
您可以直接在有条件的拆分中执行此操作,但我建议不要这样做。相反,计算派生列中的布尔值 (true/false) 条件并将其添加到您的数据流中。然后,如果你得到意想不到的结果,你可以在 Derived Column 步骤和 Conditional Split
之间添加一个数据查看器实施
将派生列添加到数据流中。添加一个名为 BadMail
的新列。如果它是真的,那么我们将路由到坏文件。如果为真,它将继续前往目的地。
SSIS 的表达式语言将使用三元运算符(test) ? true_condition : false_condition
我要测试 null ISNULL(mail)
、长于 20 len(mail) > 20
和零长度 len(mail) == 0
。
如果这三个条件中的任何一个为真,那么||
是合乎逻辑的,那么我们需要将BadMail设置为true
(ISNULL(mail) || len(mail) > 20 || len(mail) == 0) ? true : false
您可以简化它以消除三元运算符,但我发现在这些情况下明确表达我的意图很有帮助。作为旁注,如果您仍然遇到意外结果的问题,请添加前面的派生列转换并为每个条件(空、0 或大于 20 个字符)添加一个列,然后您可以单独检查它们。
现在,我们添加条件拆分
此处的表达式只是我们的新列 BadMail
,它将路由到输出路径 1 或您命名的任何内容。好的邮件会通过默认的输出路径。