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 :

Delimiter Missing CSV


Sujet :

Développement de jobs

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Alternante
    Inscrit en
    Novembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternante

    Informations forums :
    Inscription : Novembre 2015
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Delimiter Missing CSV
    Bonjour,

    Je transfert une grande volume de données qui est plus de 200 millions lignes d'enregistrements.
    J'extraire les données d'Oracle dans un fichier csv, le charger dans S3 et puis finalement dans AWS Redshift.
    Mais des fois les séparateurs me manquent.
    Nom : DELIMITER MISSING.JPG
Affichages : 168
Taille : 52,5 Ko

    J'ai bien mis "escape" et "delimiter as" dans mon PSQL mais je ne sais pas si ça marche toutes les fois et comment pourrai-je éviter ce problème étant donné la volume est vraiment grosse et ça me gène de le re-tester tout le temps.

    Merci par avance pour votre aide.
    Cordialement,
    Sylvanas

  2. #2
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2010
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 343
    Points : 653
    Points
    653
    Par défaut
    Bonjour,

    Tu parles de PLSQL pour faire tes fichiers. Tu devrais utiliser un job Talend pour faire l'extraction avec un tOracleInput -> tMap-> tFileOutputDelimited. Comme cela les fichiers écrit par Talend seront plus facile a lire par Talend avec le composant tFileInputDelimited. Tu choisis toi même ton séparateurs de ligne et de colonne.

    D’après ton screenshot, il semble que tu ais des problèmes de qualité de donnée.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Alternante
    Inscrit en
    Novembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternante

    Informations forums :
    Inscription : Novembre 2015
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par emenuet Voir le message
    Bonjour,

    Tu parles de PLSQL pour faire tes fichiers. Tu devrais utiliser un job Talend pour faire l'extraction avec un tOracleInput -> tMap-> tFileOutputDelimited. Comme cela les fichiers écrit par Talend seront plus facile a lire par Talend avec le composant tFileInputDelimited. Tu choisis toi même ton séparateurs de ligne et de colonne.

    D’après ton screenshot, il semble que tu ais des problèmes de qualité de donnée.

    Bonjour Emeunuet,

    Merci pour ta réponse.
    J'ai utilisé tOracleInput -> tFileOutputDelimited dans Talend et j'ai choisi moi même les séparateurs sans utiliser tMap.
    C'est quoi l'intéret d'utiliser tMap ici ? je ne change pas les données.
    Et est-ce que ça va casser la performance d'extraire avec le tMap?

  4. #4
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2010
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 343
    Points : 653
    Points
    653
    Par défaut
    Bonjour,

    J'utilise toujours un tMap au cas ou pour la maintenance. Mais surtout pour pouvoir utiliser les métadatas sur le composant Input et sur le composant Output.
    Le composant tMap ne ralentit pas le traitement dans ce cas la.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Alternante
    Inscrit en
    Novembre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternante

    Informations forums :
    Inscription : Novembre 2015
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par emenuet Voir le message
    Bonjour,

    J'utilise toujours un tMap au cas ou pour la maintenance. Mais surtout pour pouvoir utiliser les métadatas sur le composant Input et sur le composant Output.
    Le composant tMap ne ralentit pas le traitement dans ce cas la.
    Ok, merci ^^ je vais tester si avec tMap qu'il ne va pas perdre mon séparateur.
    Et en fait j'ai une autre question :

    J'ai créé une table de suivi pour le transfert dans laquelle une ligne est insérée à chaque exécution d’un sous job.
    Pour la première fois je veux alimenter mes données à partir d'un an avant. Mais après, je veux qu'il alimente les données qui commencent par le temps de la fin de la dernière d'exécution et finiras au sysdate.
    J'ai réussi à le faire mais dans deux jobs séparés.

    Maintenant j'essaie de rajouter une condition pour que je puisse tout faire dans un job : dans un premier cas, alimenter d'un an avant jusqu'à une certaine date; un autre pour l'alimentation régulière à partir de la dernière end date jusqu'au sysdate.

    J'ai mis ainsi une condition dans tJavaRow:
    if (!Relational.ISNULL(input_row.ENDREQUESTDATE)) {
    globalMap.put("start_requete", input_row.ENDREQUESTDATE);}
    else { globalMap.put("start_requete", TalendDate.setDate(TalendDate.getCurrentDate(), -365, "dd"));}

    if (!Relational.ISNULL(input_row.RUNID)){
    globalMap.put("maxRunid", input_row.RUNID);}
    else {globalMap.put("maxRunid", 0);}
    Integer counter_id = (Integer)globalMap.get("maxRunid");
    globalMap.put("maxRunid", new Integer(counter_id.intValue()+1));

    Qui n'a pas marché.
    J'ai changé la condition comme null == input_row.X, il m'a dit "==" n'est pas défini pour un objet null ...
    Je fais une condition dans tMap avant d'entrer dans tJavaRow en limitant :
    row1.RUNID != null ? row1.RUNID : 0
    row1.ENDREQUESTDATE == null ? TalendDate.setDate(TalendDate.getCurrentDate(), -365, "dd") : row1.ENDREQUESTDATE

    Sachant que :
    globalMap.put("start_requete",TalendDate.setDate(input_row.ENDREQUESTDATE, -5, "mm"));
    globalMap.put("maxRunid", input_row.RUNID);
    Integer counter_id = (Integer)globalMap.get("maxRunid");
    globalMap.put("maxRunid", new Integer(counter_id.intValue()+1));
    marche très bien quand ce n'est pas null dans mon job régulier.
    C'est le code que j'ai mis dans job régulier mais ma tutrice trouve ça pénible de créer deux jobs pour un processus.
    Mais j'arrive pas à mettre la condition en oeuvre... ​

Discussions similaires

  1. [PowerShell] Export en CSV - Export-csv erreur de "Delimiter"
    Par leo_archange dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 19/12/2014, 14h01
  2. Convertisseur CSV en tab delimited
    Par olibara dans le forum C#
    Réponses: 5
    Dernier message: 28/10/2008, 06h44
  3. [MySQL] [MaxDB] select - Invalid keyword or missing delimiter
    Par nicoda dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 07/02/2008, 13h08
  4. Mise à jour d'une table avec un fichier csv
    Par blackangel dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 26/05/2005, 14h46
  5. CSV et XMLRAD
    Par JCK dans le forum XMLRAD
    Réponses: 4
    Dernier message: 26/04/2003, 19h21

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