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

SQL Oracle Discussion :

Exclusion de lignes à la création d'une table externe


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 85
    Points : 62
    Points
    62
    Par défaut Exclusion de lignes à la création d'une table externe
    J'aimerais exclure les lignes où CODE est null de la définition de la table externe suivante:

    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
    CREATE
    TABLE "DBDEV"."REC_XLS_EMP"
    (
    "Emp_id" VARCHAR2(20 BYTE),
    "Last_name" VARCHAR2(50 BYTE),
    "First_name" VARCHAR2(20 BYTE),
    "Adr_1" VARCHAR2(300 BYTE),
    "Adr_2" VARCHAR2(300 BYTE),
    "CODE" VARCHAR2(30 BYTE)
    "CITY" VARCHAR2(30 BYTE)
     
    )
    ORGANIZATION EXTERNAL
    (
    TYPE ORACLE_LOADER DEFAULT DIRECTORY "LOADER" ACCESS PARAMETERS (
    RECORDS DELIMITED BY newline Skip 1 FIELDS TERMINATED BY 0X'09' 
    MISSING FIELD VALUES ARE NULL 
    REJECT ROWS
    WITH
    ALL NULL 
    FIELDS (Emp_id, Last_name, First_name, Adr_1, Adr_2, CODE, CITY) ) LOCATION ( 'Emp.tsv' )
    )
    REJECT LIMIT UNLIMITED;
    Comment puis-je faire ?

  2. #2
    En attente de confirmation mail
    Inscrit en
    Mars 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 205
    Points : 230
    Points
    230
    Par défaut
    Tu peux utiliser l'option :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LOAD WHEN CODE!=NULL

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 85
    Points : 62
    Points
    62
    Par défaut
    Oui , mais où doit-on insérer cette ligne ?

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Select *
      From DBDEV.REC_XLS_EMP
     Where code is Not null
    et éventuellement ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NULLIF (CODE = BLANKS)
    dans la définition de la table externe

  5. #5
    En attente de confirmation mail
    Inscrit en
    Mars 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 205
    Points : 230
    Points
    230
    Par défaut
    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
    
    CREATE
    TABLE "DBDEV"."REC_XLS_EMP"
    (
    "Emp_id" VARCHAR2(20 BYTE),
    "Last_name" VARCHAR2(50 BYTE),
    "First_name" VARCHAR2(20 BYTE),
    "Adr_1" VARCHAR2(300 BYTE),
    "Adr_2" VARCHAR2(300 BYTE),
    "CODE" VARCHAR2(30 BYTE)
    "CITY" VARCHAR2(30 BYTE)
     
    )
    ORGANIZATION EXTERNAL
    (
    TYPE ORACLE_LOADER DEFAULT DIRECTORY "LOADER" ACCESS PARAMETERS (
    RECORDS DELIMITED BY newline Skip 1 FIELDS TERMINATED BY 0X'09' 
    LOAD WHEN CODE!=NULL
    MISSING FIELD VALUES ARE NULL 
    REJECT ROWS
    WITH
    ALL NULL 
    FIELDS (Emp_id, Last_name, First_name, Adr_1, Adr_2, CODE, CITY) ) LOCATION ( 'Emp.tsv' )
    )
    REJECT LIMIT UNLIMITED;

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 85
    Points : 62
    Points
    62
    Par défaut
    J'obtiens cette erreur avec le LOAD WHEN :

    ORA-29913: error in executing ODCIEXTTABLEOPEN callout
    ORA-29400: data cartridge error
    KUP-00554: error encountered while parsing access parameters
    KUP-01005: syntax error: found "load": expecting one of: "column, enclosed, exit, (, ltrim, lrtrim, ldrtrim, missing, notrim, optionally, rtrim, reject"
    KUP-01007: at line 1 column 65
    ORA-06512: at "SYS.ORACLE_LOADER", line 19

  7. #7
    En attente de confirmation mail
    Inscrit en
    Mars 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 205
    Points : 230
    Points
    230
    Par défaut
    Au temps pour moi, ça devrait mieux fonctionner comme ça :

    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
    CREATE
    TABLE "DBDEV"."REC_XLS_EMP"
    (
    "Emp_id" VARCHAR2(20 BYTE),
    "Last_name" VARCHAR2(50 BYTE),
    "First_name" VARCHAR2(20 BYTE),
    "Adr_1" VARCHAR2(300 BYTE),
    "Adr_2" VARCHAR2(300 BYTE),
    "CODE" VARCHAR2(30 BYTE)
    "CITY" VARCHAR2(30 BYTE)
     
    )
    ORGANIZATION EXTERNAL
    (
    TYPE ORACLE_LOADER DEFAULT DIRECTORY "LOADER" ACCESS PARAMETERS (
    RECORDS DELIMITED BY newline
    LOAD WHEN CODE!=NULL
    Skip 1 FIELDS TERMINATED BY 0X'09' 
    MISSING FIELD VALUES ARE NULL 
    REJECT ROWS
    WITH
    ALL NULL 
    FIELDS (Emp_id, Last_name, First_name, Adr_1, Adr_2, CODE, CITY) ) LOCATION ( 'Emp.tsv' )
    )
    REJECT LIMIT UNLIMITED;

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 85
    Points : 62
    Points
    62
    Par défaut
    En fait, cela ne fonctionne qu'avec LOAD WHEN CODE!=BLANKS ! Il y a toujours une erreur avec CODE!=NULL !

  9. #9
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par lcaya Voir le message
    En fait, cela ne fonctionne qu'avec LOAD WHEN CODE!=BLANKS ! Il y a toujours une erreur avec CODE!=NULL !
    Bref, je comprends bien que dans un fichier de contrôle pour sqlloader on utilise la clause LOAD pour éviter de charger une table de travail avec des données incohérentes. Mais, une table externe ne peut être utilisé qu'avec un select et les données restent toujours dans le fichier. Donc, prendre soin au chargement des données que les blancs deviennent des nuls et ajouter dans le select la condition « colonne is not null » me semble pas seulement suffisant mais aussi plus clair.

    [Edit]
    Et on ne parle plus de que est ce que ça signifie
    CODE!=NULL
    [/Edit]

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

Discussions similaires

  1. Création d'une table externe
    Par pbatty1 dans le forum SQL
    Réponses: 12
    Dernier message: 13/10/2011, 16h27
  2. Réponses: 2
    Dernier message: 13/07/2006, 17h01
  3. selectionner une ligne au hasard dans une table
    Par dark_vidor dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/06/2005, 12h01
  4. Création d'une table avec foreign key
    Par lepierre dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/09/2004, 14h20
  5. INTERBASE Création d'une table
    Par Corben dans le forum InterBase
    Réponses: 2
    Dernier message: 19/06/2004, 20h55

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