2010-12-13 3 views
0

Ich habe einen einfachen Talend-Perl-Job erstellt, um Daten aus einer Excel-Datei zu extrahieren und in eine MySQL-Tabelle zu schreiben. Das funktioniert gut, wenn ich es in Talend Studio 4.1.1 starte.Fehlende Dateien beim Ausführen eines Talend-Perl-Jobs über die Befehlszeile

Das Problem ist, wenn ich den Job exportieren. Ich versuche es wie so zu laufen:

perl -Ilib proj.job_import_prods_0.1.pl --context = Default --context_param file_path = "/ home/antoniocs/Programmierung/file.xls" $ *

Das gibt mir die folgenden Fehler:

Kann nicht IO/Scalar.pm in @INC (@INC enthält orten: /home/antoniocs/Programmierung/lib /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5/usr/teilen/perl5 /usr/lib/perl /5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl) bei lib/OLE/Storage_Lite.pm Linie 171. BEGIN fehlgeschlagen -. compilation bei lib abgebrochen/OLE/Storage_Lite.pm Linie 171. Compilation fehlgeschlagen erfordert in bei lib/Kalkulationstabelle/ParseExcel.pm Zeile 18 BEGIN fehlgeschlagen - Kompilierung abgebrochen bei lib/Kalkulationstabelle/ParseExcel.pm Leitung 18 Compilation fehlgeschlagen erfordert in bei proj.job_import_prods_0. 1.pl Zeile 568. BEGIN gescheitert - compilatio n abgebrochen bei proj.job_import_prods_0.1.pl Linie 568.

Ich habe bereits die ParseExcel.pm int Ordner lib im Ordner des Auftrags gestellt. Gibt es keine Möglichkeit, dass Talend automatisch die notwendigen Dateien zum Ordner des Jobs hinzufügt?

HINWEIS: Beim Exportieren des Jobs habe ich das Kontrollkästchen "Exportabhängigkeiten" aktiviert. EXTRA HINWEIS: Ich bin kein Perl-Programmierer.

Antwort

1

Sie müssen den Pfad finden, wo talend Perl-Module (Sie können nur Dateien verschieben). Sobald Sie das wissen, können Sie eine PERL5LIB Umgebungsvariable erstellen perl zu sagen, wo die Module er sucht gespeichert:

PERL5LIB=/path/to/modules perl -Ilib proj.job_import_prods_0.1.pl --context=Default --context_param file_path="/home/antoniocs/programming/file.xls" $* 

Eine schnelle find /where/talend/lives -name Scalar.pm sollte Ihnen einen Anhaltspunkt geben (Sie das Verzeichnis vor IO). Wenn Sie mehrere Verzeichnisse benötigen, können diese wie in der PATH Umgebungsvariablen mit : getrennt werden.

Alternativ können Sie die benötigten Module von Ihrem Paketmanager installieren (Hinweis, RedHat Style Boxen verwenden Namen wie Perl-IO-Scalar und Debian Style Boxen verwenden Namen wie libio-scalar-perl) oder CPAN.

+0

Das Modul 'IO :: Scalar' lebt in der Distribution [IO-stringy] (http://search.cpan.org/dist/IO-stringy/), daher ist der RPM-Name [perl-IO-stryty] (http://www.rpmfind.net/linux/rpm2html/search.php?query=perl-IO-stringy) und der Deb-Name lautet [libio-silly-perl] (http://packages.debian.org/ de/sid/libio-stringy-perl). – daxim

+0

Danke! Die Akten waren alle in Talendir.Ich habe sie einfach in den job lib-Ordner kopiert und es hat alles super funktioniert :) Nochmals vielen Dank (ich habe das auch im Talend-Forum gepostet und niemand hat darauf geantwortet. GO STACKOVERFLOW) – AntonioCS

Verwandte Themen