我创建了一个简单的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程序员。
答案 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>