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

Administration Oracle Discussion :

Fichier .ctl déclenchement requête si date non nul


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 12
    Par défaut Fichier .ctl déclenchement requête si date non nul
    Bonjour à tous,

    Premier post pour un sujet auquel je n'ai pas trouvé de solution malgré de nombreux tests et recherches.

    Je dois modifier une fichier .ctl pour ne déclencher le chargement d'une ligne que si la colonne1 = '3' (Cela fonctionne) mais également si le champ date est non vide (Un champ date vide correspond à 8 caractères vides dans le fichier source)

    Le but voulue est de supprimer les rejets des lignes qui ont des dates vides, d'ou l'idée de mettre une pré-condition dans le when de déclenchement.

    Ligne de déclenchement fonctionnant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INTO TABLE xx.yyyy WHEN (colonne1 = "3")
    Mais voila pour tester qu'un déclenchement ne se fasse que si un champ date est non vide (ou null ?) je n'ai pas trouvé la bonne syntaxe à rajouter à la condition précédente. Voici quelque uns de mes tests de déclenchements pour le champ date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INTO TABLE xx.yyyy WHEN (colonne1 = "3") AND (colonneDate != "        ")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INTO TABLE xx.yyyy WHEN (colonne1 = "3") AND (colonneDate  != "")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INTO TABLE xx.yyyy WHEN (colonne1 = "3") AND (colonneDate != BLANKS)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INTO TABLE xx.yyyy WHEN (colonne1 = "3") AND (("nvl(trim(colonneDate ), '1') != '1'")
    Sachez que j'ai également testé la fonction décode et nvl dans tous les sens sans succés.

    Merci d'avance pour vos apports et bonne journée,

  2. #2
    Membre expérimenté Avatar de dariyoosh
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 236
    Par défaut
    Bonsoir,


    Dans le cas où le chargement des données est effectué en utilisant l'outil SQL*Loader, il est possible d'inclure une clause WHEN afin de mettre des restrictions sur les données au moment de chargement.

    Le lien suivant peut-être va vous aider afin de mieux illustrer cette fonctionalité.

    http://ugweb.cs.ualberta.ca/~c391/manual/chapt5.html

    ...
    To evaluate the WHEN clause, SQL*Loader first determines the values of all the fields in the record. Then the WHEN clause is evaluated. A row is inserted into the table only if the WHEN clause is true.
    ...

    Cordialement,
    Dariyoosh

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    En SQL non vide s'écrit IS NOT NULL.
    Essayez ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHEN (colonne1 = '3') AND (colonneDate IS NOT NULL)

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 12
    Par défaut
    Merci pour vos apports malheureusement cette syntaxe ne fonctionne pas, en effet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHEN (colonne1 = '3') AND (colonneDate IS NOT NULL)
    Donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SQL*Loader-350: Syntax error at line 227.
    Expecting = or "<>", found "IS".
    WHEN (colonne1  = "3") AND (colonneDate IS NOT NULL)
                                                      ^
    J'ai réussi à résoudre le problème de mon coté (Erreur sur fchier source). Pour le problème de tester un champ null je pense qu'il faut s'orienter vers :

    colonneDate != ""
    colonneDate != BLANKS

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

Discussions similaires

  1. [AC-2010] Requête dernier paramètre non vide avant une date
    Par docjo dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 22/05/2013, 14h58
  2. Réponses: 9
    Dernier message: 04/06/2009, 16h59
  3. Requête avec date et champs oui/non
    Par MoonShadows dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 07/07/2007, 01h53
  4. Fichier log des requêtes d'une bdd
    Par Sub0 dans le forum Administration
    Réponses: 4
    Dernier message: 22/03/2004, 14h12
  5. Supprimer un fichier par rapport a une date
    Par NewB dans le forum Linux
    Réponses: 2
    Dernier message: 25/06/2003, 13h44

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