存储导致"错误的行号#34;

时间:2015-02-26 14:41:01

标签: talend

enter image description here

我必须从网址中检索某些信息。为此,我必须在url的字段中输入文本。我正在使用GET操作。我必须修改文本以用"%20"替换空格。有时,文本(从数据库中获取)形成得很糟糕。我想知道行号,这样我就可以手动更改数据库中这些行的文本并再次运行它。我试图使用日志和错误部分,但运气不佳。有没有人知道如何做到这一点?

1 个答案:

答案 0 :(得分:0)

第一枪:在控制台上输出错误的网址

到目前为止,我为您的问题想出了以下工作设计: Job design and tJavaFlex component view

诀窍是捕获tHttpRequest组件的异常并在控制台上打印必要的细节。对于此示例,我包括行号,异常消息和产生异常的URL。

输出(我无法重现您的“非法字符错误”,所以我选了另一个): Job output

第二次拍摄:输出到文件

如果你真的需要将行号输出到文件中,事情就会变得复杂一些。

Job version 2

我们不是将信息直接打印到控制台上,而是将所有行号收集到tJavaFlex内的类型(Java)List的上下文变量中。在通常的URL处理(我从作业设计中遗漏以保持示例很小)之后,我们遍历Java List 并将其保存到tHashOutput中,以便我们最终可以写入文件。

我们不能直接写入tLoop部分中的文件,因为迭代流会导致tFileInputDelimited多次打开的情况。如果禁用“附加”,则最后只有最后一个错误的URL行号最终会出现在输出文件中。如果启用了“附加”,您将在第一次作业运行后获得完整的行号列表 - 但是每次运行作业时都会附加,使列表越来越长。解决方法是使用依赖于运行时的文件名(例如时间戳)或在作业运行开始时删除文件。我选择了第三个选项,每次运行作业时都会覆盖文件。您可以在这些选项中选择最适合您用例的选项。

详细信息

默认情况下,tHashOutput / tHashInput组件不可见,但必须先启用才能显示:https://www.talendforge.org/forum/viewtopic.php?pid=107249#p107249

上下文变量: Context variables

INIT: INIT

tJavaFlex“捕获错误”,结束代码: tJavaFlex

tLoop:

tLoop

tFixedFlowInput“badURL”:

badURL

tHashOutput:

需要启用“附加”。