2010-12-13 20 views
0

J'ai créé un travail Talend Perl simple pour extraire des données d'un fichier Excel et les placer dans une table mysql. Cela fonctionne très bien quand je l'exécute dans Talend Studio 4.1.1.Fichiers manquants lors de l'exécution d'un travail Talend Perl à partir de la ligne de commande

Le problème est lorsque j'exporte le travail. J'essaie de l'exécuter comme ceci:

perl -Ilib proj.job_import_prods_0.1.pl --context = Par défaut --context_param file_path = "/ home/antoniocs/programmation/file.xls" $ *

Cela me donne les erreurs suivantes:

Impossible de localiser IO/Scalar.pm dans @INC (@INC contient: /home/antoniocs/programmation/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) à ligne lib/OLE/Storage_Lite.pm 171. BEGIN a échoué -. compilation interrompue à lib/OLE/Storage_Lite.pm ligne 171. compilation a échoué dans besoin à lib/ligne Tableur/ParseExcel.pm 18. BEGIN échoué - compilation interrompue à lib/ligne Tableur/ParseExcel.pm 18. compilation a échoué dans au besoin proj.job_import_prods_0. 1.pl ligne 568. BEGIN a échoué - compilatio n avorté à proj.job_import_prods_0.1.pl ligne 568.

Je l'ai déjà placé le ParseExcel.pm int le dossier lib dans le dossier du travail. Talend ne va-t-il pas automatiquement ajouter les fichiers nécessaires au dossier du travail?

REMARQUE: Lors de l'exportation du travail, j'ai coché la case "dépendances d'exportation" EXTRA NOTE: Je ne suis pas un programmeur perl.

Répondre

1

Vous devez trouver le chemin où talend stocke les modules Perl (vous ne pouvez pas déplacer les fichiers). Une fois que vous savez que, vous pouvez créer une variable d'environnement PERL5LIB dire perl où les modules qu'il recherche sont stockés:

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

Un find /where/talend/lives -name Scalar.pm rapide devrait vous donner une idée (vous voulez que le répertoire avant IO). Si vous avez besoin de plusieurs répertoires, ils peuvent être séparés par un : comme dans la variable d'environnement PATH. Vous pouvez également installer les modules requis à partir de votre gestionnaire de paquets (indice, les boîtes de style RedHat utilisent des noms comme perl-IO-Scalar et les boîtes de style Debian utilisent des noms comme libio-scalar-perl) ou CPAN.

+0

Le module 'IO :: Scalar' vit dans la distribution [IO-stringy] (http://search.cpan.org/dist/IO-stringy/), donc le nom RPM est [perl-IO-stringy] (http://www.rpmfind.net/linux/rpm2html/search.php?query=perl-IO-stringy) et le nom deb est [libio-stringy-perl] (http://packages.debian.org/ de/sid/libio-stringy-perl). – daxim

+0

Merci! Les fichiers étaient tous dans le répertoire talend.Je les ai simplement copiés dans le dossier lib de job et tout s'est très bien passé :) Merci encore (j'ai aussi posté ceci dans le forum de Talend et personne n'a répondu GO STACKOVERFLOW) – AntonioCS