Отсутствуют файлы при запуске задания Talend Perl из командной строки

Я создал простое задание 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" $ *

Это дает мне следующие ошибки:

Не удается найти IO / Scalar.pm в @INC (@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 - компиляция прервана в строке 171 lib / OLE / Storage_Lite.pm. Ошибка компиляции в строке требования lib / Spreadsheet / ParseExcel.pm 18. Ошибка BEGIN - компиляция прервана в строке 18 lib / Spreadsheet / ParseExcel.pm Компиляция завершилась неудачно при требовании в строке 568 proj.job_import_prods_0.1.pl. Ошибка BEGIN - компиляция прервана на строке 568 proj.job_import_prods_0.1.pl.

Я уже поместил ParseExcel.pm в папку lib в папке с заданием. Есть ли способ, которым talend автоматически добавит необходимые файлы в папку проекта?

ПРИМЕЧАНИЕ. При экспорте задания я установил флажок «экспорт зависимостей» ДОПОЛНИТЕЛЬНОЕ ПРИМЕЧАНИЕ: Я не программист на Perl.


person AntonioCS    schedule 13.12.2010    source источник


Ответы (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.

person Chas. Owens    schedule 13.12.2010
comment
Модуль IO::Scalar находится в дистрибутиве IO-stringy, поэтому имя RPM - perl-IO-stringy, а имя deb - libio-stringy-perl. - person daxim; 13.12.2010
comment
Спасибо! Все файлы были в каталоге talend. Я просто скопировал их в папку lib с заданиями, и все сработало отлично :) Еще раз спасибо (я также разместил это на форуме talend, и никто не ответил. GO STACKOVERFLOW) - person AntonioCS; 14.12.2010