【问题标题】:Missing files when running a Talend perl job from the command line从命令行运行 Talend perl 作业时缺少文件
【发布时间】:2010-12-13 00:06:47
【问题描述】:

我创建了一个简单的 talend perl 作业来从 excel 文件中提取数据并将其放入 mysql 表中。 当我在 talend studio 4.1.1 中运行它时效果很好。

问题是当我导出作业时。我尝试像这样运行它:

perl -Ilib proj.job_import_prods_0.1.pl --context=默认 --context_param file_path="/home/antoniocs/programming/file.xls" $*

这给了我以下错误:

在@INC 中找不到 IO/Scalar.pm (@INC 包含: /home/antoniocs/programming/lib /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) 在 lib/OLE/Storage_Lite.pm 第 171 行。 BEGIN 失败——编译在 lib/OLE/Storage_Lite.pm 第 171 行。 在要求中编译失败 lib/Spreadsheet/ParseExcel.pm 第 18 行。 BEGIN 失败——编译在 lib/Spreadsheet/ParseExcel.pm 第 18 行。 在要求中编译失败 proj.job_import_prods_0.1.pl 第 568 行。 BEGIN 失败——编译在 proj.job_import_prods_0.1.pl 第 568 行。

我已经将 ParseExcel.pm 放入作业文件夹中的 lib 文件夹中。 talend 有没有办法自动将必要的文件添加到作业的文件夹中?

注意:导出作业时,我选中了“导出依赖项”框 额外说明:我不是 perl 程序员。

【问题讨论】:

    标签: linux perl talend


    【解决方案1】:

    您需要找到talend 存储Perl 模块的路径(您不能只是移动文件)。一旦你知道了,你就可以创建一个PERL5LIB 环境变量来告诉perl 它要查找的模块存储在哪里:

    PERL5LIB=/path/to/modules perl -Ilib proj.job_import_prods_0.1.pl --context=Default --context_param file_path="/home/antoniocs/programming/file.xls" $*
    

    快速的find /where/talend/lives -name Scalar.pm 应该会给你一个线索(你想要IO 之前的目录)。如果您最终需要多个目录,可以使用 : 分隔它们,就像在 PATH 环境变量中一样。

    或者,您可以从包管理器安装所需的模块(提示,RedHat 样式框使用 perl-IO-Scalar 之类的名称,Debian 样式框使用 libio-scalar-perl 之类的名称)或CPAN

    【讨论】:

    • 模块IO::Scalar存在于发行版IO-stringy中,所以RPM名称是perl-IO-stringy,deb名称是libio-stringy-perl
    • 谢谢!这些文件都在 talend 目录中。我刚刚将它们复制到作业库文件夹中,一切都很好:) 再次感谢(我也在 talend 论坛上发布了这个,没有人回应。GO *)
    最近更新 更多