0

Excelファイルからデータを抽出してmysqlテーブルに配置するための単純なtalend perlジョブを作成しました。これは、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 でコンパイルが require で失敗しました。 . Compilation failed in require in proj.job_import_prods_0.1.pl line 568. BEGIN failed--コンパイルは proj.job_import_prods_0.1.pl 行 568 で中止されました。

ジョブのフォルダー内の lib フォルダーに ParseExcel.pm を既に配置しています。talendが必要なファイルをジョブのフォルダーに自動的に追加する方法はありませんか?

注: ジョブをエクスポートするとき、「依存関係のエクスポート」ボックスをチェックしました。 追加の注: 私は perl プログラマーではありません。

4

1 に答える 1

1

Perl モジュールを格納するパスを見つける必要がありtalendます (ファイルを移動するだけではできません)。それがわかったら、探しているモジュールがどこに保存されているかを示す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からインストールできます。

于 2010-12-13T01:41:40.617 に答える