IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement de jobs Discussion :

tfileoutput, csv, et guillemets


Sujet :

Développement de jobs

  1. #1
    Candidat au Club
    Homme Profil pro
    Galéreur en informatique
    Inscrit en
    Octobre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Galéreur en informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut tfileoutput, csv, et guillemets
    Bonjour,

    Je récupère "bêtement" le contenu de tables pour les mettre dans un csv.

    J'arrive bien à choisir mon séparateur et à mettre des guillemets autour des données.

    Par contre je choisis que ma première ligne soit les noms des colonnes mais du coup ceux-ci n'ont pas de guillemets autour de leurs noms.

    ex :
    colonne1;colonne2;colonne3
    "azer";"3434";"jok"
    "arer";"3334";"jak"

    Alors que moi je veux :
    "colonne1";"colonne2";"colonne3"
    "azer";"3434";"jok"
    "arer";"3334";"jak"

    J'imagine que c'est extrêmement simple mais je n'ai pas trouvé.

    Si quelqu'un pouvait m'aider, merci !

  2. #2
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    Hello,

    De ce que je vois sur le forum Talend officiel.
    Il faut que tu crées ton header seul puis que tu ajoutes les données au fichier.
    C'est pas sexy !
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  3. #3
    Candidat au Club
    Homme Profil pro
    Galéreur en informatique
    Inscrit en
    Octobre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Galéreur en informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Ouaip c'est même plutôt pourri.
    Dommage car le soft est plutôt très bon.

  4. #4
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Bonjour,

    Une solution "propre" serait de modifier le composant talend pour que celui-ci propage l'option guillemet aux entêtes également.

  5. #5
    Candidat au Club
    Homme Profil pro
    Galéreur en informatique
    Inscrit en
    Octobre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Galéreur en informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Faut que je m'intéresse à la modification de composants, effectivement ça peut être une solution intéressante.

  6. #6
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par MaxBoun Voir le message
    Faut que je m'intéresse à la modification de composants, effectivement ça peut être une solution intéressante.
    Un conseil : ne modifie jamais un composant natif, crée un fork.

    Pour moi en un coup d'oeil il y a deux ligne à modifier dans le fichier tFileOutputDelimeted_begin.javajet

    1 / remplacer (Ligne 90 en version 6.4.1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    out<%=cid%>.write("<%=column.getLabel() %>");
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    out<%=cid%>.write("\"<%=column.getLabel() %>\"");
    2 / remplacer (Ligne 94 en version 6.4.1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    routines.system.DynamicUtils.writeHeaderToDelimitedFile(<%=conn.getName() %>.<%=column.getLabel() %>, out<%=cid%>, OUT_DELIM_<%=cid%>);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    routines.system.DynamicUtils.writeHeaderToDelimitedFile("\"" + <%=conn.getName() %>.<%=column.getLabel() %> + "\"", out<%=cid%>, OUT_DELIM_<%=cid%>);
    NB j'ai hardcodé les guillemets mais normalement je devrais récupérer le caractère de protection et l'ajouter
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  7. #7
    Candidat au Club
    Homme Profil pro
    Galéreur en informatique
    Inscrit en
    Octobre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Galéreur en informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Je test ça jeudi, merci beaucoup en tout cas !

  8. #8
    Membre à l'essai
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Octobre 2017
    Messages : 12
    Points : 15
    Points
    15
    Par défaut
    bonjour MaxBoun,
    si tu ne choisis pas que ta première ligne soit les noms des colonnes, tu obtiendras ce que du cherches ...

  9. #9
    Candidat au Club
    Homme Profil pro
    Galéreur en informatique
    Inscrit en
    Octobre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Galéreur en informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par dr_logic Voir le message
    bonjour MaxBoun,
    si tu ne choisis pas que ta première ligne soit les noms des colonnes, tu obtiendras ce que du cherches ...
    Non car justement, je n'aurai pas le titre des colonnes.

    Pour la solution du fork, je n'ai toujours pas eu le temps de tester.
    J'avais d'autres trucs à faire avec des fichiers positionnels, une horreur ^^

    Bon j'avoue, je n'ai pas non plus trouver comment faire un fork ...
    (de moi-même, mais je pense que je vais rapidement trouvé ça en fouillant sur le net)

  10. #10
    Membre à l'essai
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Octobre 2017
    Messages : 12
    Points : 15
    Points
    15
    Par défaut un peu de java ...
    bonjour MaxBoun,

    voici une solution qui fonctionne:

    Nom : CSV1.GIF
Affichages : 575
Taille : 69,6 KoNom : CSV2.GIF
Affichages : 572
Taille : 76,8 Koroutine.txt
    l'idée est de faire un premier job pour enregistrer les noms des champs (avec des guillemets)
    puis à la suite du fichier l'extraction (penser à cocher "Ecrire après" dans tFileOutputDelimited2)

    pour ajouter un caractère, j'ai une routine perso (ajouter dans Code / Routines -> créer ma_routine 0.1 et coller le code.

    Enfin, c'est le composant tMAP qui fait le reste ...

    voici le code de la routine:

    public class ma_routine {
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    	  /**
         * addChars: return to char z.
         *
         *
         * {talendTypes} String
         *
         * {Category} TalendString
         *
         * {param} Integer(92) text: insert \.
         *
         *
         * {example} addChars(34)
         */
     
        	   public static String addChars(Integer z){
        		   int number = z;
        		   char c = (char)number;
        		   String pa = new String ("");
        		   pa = Character.toString(c);
        		   return pa;
        	   }
    }

  11. #11
    Candidat au Club
    Homme Profil pro
    Galéreur en informatique
    Inscrit en
    Octobre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Galéreur en informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par dr_logic Voir le message
    bonjour MaxBoun,

    voici une solution qui fonctionne:
    [...]
    Alors j'ai bien compris le principe mais je n'ai pas trouvé comment le reproduire avec une table en entrée (et donc plusieurs colonnes).

    Je m'attaque au fork là pour l'autre solution proposée.

  12. #12
    Candidat au Club
    Homme Profil pro
    Galéreur en informatique
    Inscrit en
    Octobre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Galéreur en informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par supergeoffrey Voir le message
    Un conseil : ne modifie jamais un composant natif, crée un fork.
    Bon j'ai "copié-collé" le répertoire du composant, renommer les fichiers du nouveau et fait les modif.
    Je lance mais ça ne fonctionne pas. J'imagine que ça vient de la méthode que j'ai utilisé ...

    Si tu passes par là ^^

  13. #13
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par MaxBoun Voir le message
    Bon j'ai "copié-collé" le répertoire du composant, renommer les fichiers du nouveau et fait les modif.
    Je lance mais ça ne fonctionne pas. J'imagine que ça vient de la méthode que j'ai utilisé ...

    Si tu passes par là ^^


    Quand je forkais des composants tAforker je m'y prennais comme ça :
    _ pré-requis avoir un dossier de composant utilisateur #USER_COPONENT_DIR# https://help.talend.com/reader/mhqCk...sMxVh5F9pJguUA
    _ je copiais le dossier TOS_DI-20170623_1246-#VERSION#\plugins\org.talend.designer.components.localprovider_#VERSION_REALEASE#\components\tAforker dans le dossier #USER_COPONENT_DIR#
    _ je supprimais les fichiers de langues qui ne m'intéresse pas (Ie je garder le français et l'anglais)
    _ je renommais le dossier #USER_COPONENT_DIR#\tAforker par #USER_COPONENT_DIR#\pAforker
    _ je renommais tous les fichiers du dossier #USER_COPONENT_DIR#\pAforker commançant par un t pour le remplacer par un p
    _ je vérifiais dans tous les fichiers d'extensions .javajet si il y avait des directive include, si il y en a il faut copier les fichiers du dossier TOS_DI-20170623_1246-#VERSION#\plugins\org.talend.designer.components.localprovider_#VERSION_REALEASE#\components\tAforker vers le dossier #USER_COPONENT_DIR#.
    _ A ce moment là, tu as dupliqué ton composant, tu peux faire tes modifications.


    Il est a savoir :
    _ que les composants de Talend sont compilé qu'une fois à la création du workspace ;
    _ que les composants personnalisé dans le dossier #USER_COPONENT_DIR# sont compilés à chaque redémarage ou que tu le recharge depuis la vue Component Designer. (NB : il y a une autre config à faire, d'apres le forum Talend : Go to windows-->preference-->Talend-->Components and set the user component folder.)

    En fait, tu peux avoir deux dossiers différents pour les composants utilisateurs et pour le component designer.
    Ce que je faisait à l'époque je builder mes composant avec Ant afin de recopier des templates dans plusieurs composants.
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  14. #14
    Candidat au Club
    Homme Profil pro
    Galéreur en informatique
    Inscrit en
    Octobre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Galéreur en informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Alors à part le
    _ je vérifiais dans tous les fichiers d'extensions .javajet si il y avait des directive include, si il y en a il faut copier les fichiers du dossier TOS_DI-20170623_1246-#VERSION#\plugins\org.talend.designer.components.localprovider_#VERSION_REALEASE#\components\tAforker vers le dossier #USER_COPONENT_DIR#.
    C'est à peu près clair.

    Je ne sais pas ce qu'est un directive include (enfin j'ai du mal comprendre car ça ne fonctionne pas).
    Le seul include que je vois c'est pour du Log4j.

    J'ai bien crée mon répertoire de component et mis un p à la place du t dans les fichiers, supprimé les fichiers de langue en trop (même si ils ne gênaient pas vraiment).
    J'ai fait les modif du poste précédent.

    J'ai des erreurs de compilation, il ne trouve pas ses petits.
    Message détaillé: CsvWriterpFileOutputDelimited_1 cannot be resolved
    Avec la source qui donne ça en erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    nb_line_pFileOutputDelimited_1++;
    resourceMap.put("nb_line_pFileOutputDelimited_1",
            nb_line_pFileOutputDelimited_1);
    CsvWriterpFileOutputDelimited_1
            .writeNext(rowpFileOutputDelimited_1);
    Donc soit c'est lié au include que je ne comprend pas (on est bien d'accord que ça n'a rien à voir avec les imports ?) soit c'est autre chose.

    Je suis désolé, j'essaie vraiment de comprendre de moi-même mais je galère

  15. #15
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par MaxBoun Voir le message
    Alors à part le

    C'est à peu près clair.
    C'est la copie du dossier. Il n'y a rien à comprendre

    Citation Envoyé par MaxBoun Voir le message
    Je ne sais pas ce qu'est un directive include (enfin j'ai du mal comprendre car ça ne fonctionne pas).
    Le seul include que je vois c'est pour du Log4j.
    Oui c'est ça une directive include !
    Il y en a pas beaucoup dans les composant.
    Exemple :
    Pour le fichier Log4J par exemple en faisant comme un dur
    En fait ça copie le contenu du fichier au niveau de l'insertion de la directive lors de la compilation
    Code JET : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ include file="../templates/Log4j/Log4jFileUtil.javajet"%>
    Tu récupére le fichier Log4jFileUtil.javajet, tu le mets à la racine de ton composant
    et tu change la ligne par
    Code JET : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ include file="./Log4jFileUtil.javajet"%>

    J'ai des erreurs de compilation, il ne trouve pas ses petits.


    Avec la source qui donne ça en erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    nb_line_pFileOutputDelimited_1++;
    resourceMap.put("nb_line_pFileOutputDelimited_1",
            nb_line_pFileOutputDelimited_1);
    CsvWriterpFileOutputDelimited_1
            .writeNext(rowpFileOutputDelimited_1);
    Peux-tu me dire ce que tu as dans le fichier XML dans le balise CODEGENERATION :
    Par exemple j'ai :
    (Je pense qu'on a pas la même version)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		<CODEGENERATION>
    		<IMPORTS>
    			<IMPORT NAME="Talend_CSV" MODULE="talendcsv.jar" MVN="mvn:org.talend.libraries/talendcsv/6.0.0"  UrlPath="platform:/plugin/org.talend.libraries.csv/lib/talendcsv.jar"
    				REQUIRED="true"/>
    		</IMPORTS>
    	</CODEGENERATION>
    Tu peux exécuter ton job pour qu'il affiche l'erreur de compilation STP ?
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  16. #16
    Candidat au Club
    Homme Profil pro
    Galéreur en informatique
    Inscrit en
    Octobre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Galéreur en informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    J'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	<CODEGENERATION>
    		<IMPORTS>
    			<IMPORT NAME="Talend_CSV" MODULE="talendcsv.jar" MVN="mvn:org.talend.libraries/talendcsv/6.0.0"  UrlPath="platform:/plugin/org.talend.libraries.csv/lib/talendcsv.jar"
    				REQUIRED="true"/>
    		</IMPORTS>
    	</CODEGENERATION>
    Soit exactement la même chose si j'ai bien lu.
    Je tourne avec la version 6.4.1.

    et l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    org.talend.designer.runprocess.ProcessorException: Erreurs de compilation du Job 
    Au moins le Job "test" a des erreurs de compilation, réparez et réexportez.
    Ligne en erreur: 2047
    Message détaillé: CsvWriterpFileOutputDelimited_1 cannot be resolved
    Il peut y avoir d'autres erreurs causées par la compatibilité avec la JVM. Vérifiez que les paramètres de votre JVM sont les mêmes que dans le studio.
    	at org.talend.designer.runprocess.JobErrorsChecker.checkLastGenerationHasCompilationError(JobErrorsChecker.java:326)
    	at org.talend.designer.runprocess.DefaultRunProcessService.checkLastGenerationHasCompilationError(DefaultRunProcessService.java:380)
    	at org.talend.designer.runprocess.RunProcessService.checkLastGenerationHasCompilationError(RunProcessService.java:292)
    	at org.talend.designer.runprocess.ProcessorUtilities.generateBuildInfo(ProcessorUtilities.java:634)
    	at org.talend.designer.runprocess.ProcessorUtilities.generateCode(ProcessorUtilities.java:523)
    	at org.talend.designer.runprocess.ProcessorUtilities.generateCode(ProcessorUtilities.java:1413)
    	at org.talend.designer.runprocess.RunProcessContext$1.run(RunProcessContext.java:576)
    	at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:466)
    	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:374)
    	at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:527)
    	at org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(ProgressMonitorJobsDialog.java:284)
    	at org.eclipse.ui.internal.progress.ProgressManager.run(ProgressManager.java:1190)
    	at org.talend.designer.runprocess.RunProcessContext.exec(RunProcessContext.java:531)
    	at org.talend.designer.runprocess.ui.ProcessComposite.exec(ProcessComposite.java:1450)
    	at org.talend.designer.runprocess.ui.views.ProcessView$RunAction.run(ProcessView.java:691)
    	at org.talend.designer.runprocess.ui.actions.RunProcessAction.run(RunProcessAction.java:58)
    	at org.talend.designer.core.debug.JobLaunchConfigurationDelegate$1.run(JobLaunchConfigurationDelegate.java:84)
    	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:136)
    	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4147)
    	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3764)
    	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
    	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
    	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
    	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636)
    	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579)
    	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
    	at org.talend.rcp.intro.Application.start(Application.java:255)
    	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
    	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
    	at org.eclipse.equinox.launcher.Main.run(Main.java:1465)

  17. #17
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    je teste et je reviens vers toi
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  18. #18
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    J'ai sué un peu mais voici le patch en pièce jointe. J'ai aussi une version 6.4.1

    Mon premier coup d’œil n’était pas bon!

    J'ai dupliqué la génération de cette ligne dans mon fork. Qui était fait entre l'ajout du header et des lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CsvWriterpFileOutputDelimited_1.setQuoteStatus(com.talend.csv.CSVWriter.QuoteStatus.FORCE);
    Comme le header était ajouté avant cette configuration, le header n'avais pas de quote.

    Dans le jet voici ce que j'ai ajouté pour le faire avant l'ajout du header.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    							if(("true").equals(ElementParameterParser.getValue(node,"__CSV_OPTION__"))) {
                                %>
    								CsvWriter<%=cid%>.setQuoteStatus(com.talend.csv.CSVWriter.QuoteStatus.FORCE);
    							<% } %>
    Pour ton erreur de compilation je pense que tu avais mal modifié les directives.
    Fichiers attachés Fichiers attachés
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  19. #19
    Candidat au Club
    Homme Profil pro
    Galéreur en informatique
    Inscrit en
    Octobre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Galéreur en informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Parfait ^^

    Merci pour tout.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Export csv avec guillemets
    Par FaridM dans le forum Excel
    Réponses: 2
    Dernier message: 17/07/2013, 17h04
  2. [RegEx] Analyser fichier CSV avec guillemets
    Par Romalafrite dans le forum Langage
    Réponses: 7
    Dernier message: 07/09/2010, 16h16
  3. [XL-2007] Xls-> CSV avec guillemet
    Par bibi5883 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/03/2010, 08h02
  4. [phpMyAdmin] Importation CSV avec guillemets
    Par stefanelle dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 04/03/2009, 17h37
  5. [CSV] importation CSV avec des guillemets
    Par trash_board dans le forum Langage
    Réponses: 3
    Dernier message: 12/09/2006, 14h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo