从命令行运行Talend perl作业时丢失文件

时间:2010-12-13 00:06:47

标签: linux perl talend

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

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

  

perl -Ilib   proj.job_import_prods_0.1.pl   --context = Default --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。)at   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程序员。

1 个答案:

答案 0 :(得分: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。 / p>