0

我创建了一个简单的 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 .) 在 lib/OLE/Storage_Lite.pm 行171. BEGIN failed - 在 lib/OLE/Storage_Lite.pm 第 171 行中止编译。 在 lib/Spreadsheet/ParseExcel.pm 第 18 行的 require 中编译失败。 BEGIN failed - 在 lib/Spreadsheet/ParseExcel.pm 第 18 行中止编译. 在 proj.job_import_prods_0.1.pl 第 568 行的 require 中编译失败。BEGIN failed - 编译在 proj.job_import_prods_0.1.pl 第 568 行中止。

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

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

4

1 回答 1

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环境变量中用 a 分隔。

Alternatively, you can install the required modules from your package manager (hint, RedHat style boxes use names like perl-IO-Scalar and Debian style boxes use names like libio-scalar-perl) or CPAN.

于 2010-12-13T01:41:40.617 回答