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 :

Fichier de control et vérification de données


Sujet :

SQL Oracle

  1. #1
    Membre averti Avatar de icsor
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2008
    Messages : 258
    Points : 436
    Points
    436
    Par défaut Fichier de control et vérification de données
    Bonjour,

    j'essaye de construite un fichier de controle sous oracle 10g permettant l'intégration dans la base de données venant d'un fichier texte. Le fichier texte est de la forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    00000000000000010000000000000002S
    00000000000000010000000000000003S
    00000000000000010000000000000004N
    00000000000000040000000000000005S
    00000000000000060000000000000007S
    Ce fichier contient à chaque ligne deux nombres de 16 chiffres et une lettre qui est soit S soit N.

    Ce que j'aimerai faire, c'est vun fichier de controle qui vérifie que le caractère en position 33 (le dernier donc) est soit un S, soit un N (qui ne prenne pas d'autre valeur et qu'il ne soit pas null).

    J'ai fait un fichier de controle qui vérifie que le 33 ieme caractère est bien un S ou un N. Le problème c'est que pour moi, c'est vraiment de la bidouille (déjà, dire que mon cod_eta_ded était sur deux caractères était obligatoire pour moi, car sinon il ignoré la fin de la ligne, et donc me chargeait la ligne alors qu'elle ne devait pas être chargé).
    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
    OPTIONS (DIRECT = TRUE)
    LOAD DATA
    BADFILE '$HOME/log/import_foyer.bad'
    DISCARDFILE '$HOME/log/import_foyer.dis'
    APPEND
     
    INTO TABLE i14_foyer_input
    when ((33:33) = 'S')
    (
    ID_CLIENT position (1:16),
    ID_CLIENT_LIEN position (17:32),
    COD_ETA_DED position (33:34)
    )
     
    INTO TABLE i14_foyer_input
    when ((33:33) = 'N')
    (
    ID_CLIENT position (1:16),
    ID_CLIENT_LIEN position (17:32),
    COD_ETA_DED position (33:34)
    )
    Y-a-t-il moyen de faire des choses plus élégantes (et qui pourrait fonctionné si j'ai plus de valeur un jour, on ne sait jamais) sans modifier les contraintes sur la table?

  2. #2
    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
    Que est-ce qu'il faut faire si le caractère n'est ni S ni N ?

  3. #3
    Membre averti Avatar de icsor
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2008
    Messages : 258
    Points : 436
    Points
    436
    Par défaut
    Si la ligne se fini par S ou N, il faut l'écrire dans la base, sinon, il ne faut pas l'écrire.

  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
    Utiliser une table externe ça ne te convient pas ?

  5. #5
    Membre averti Avatar de icsor
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2008
    Messages : 258
    Points : 436
    Points
    436
    Par défaut
    Utiliser une table externe et mettre des contraintes dessus? C'est une possibilité, mais je ne sais pourquoi, mes contraintes passent en disable quand j'essaie un import.

  6. #6
    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
    Non.
    A la place de chargement par sql_loader tu peut créer une table externe.
    Ensuite tu peut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Insert into i14_foyer_input(ID_CLIENT, ID_CLIENT_LIEN, COD_ETA_DED)
    Select ID_CLIENT, ID_CLIENT_LIEN, COD_ETA_DED
      From ma_table_ext
     Where cod_etat_ded in ('S','N');

  7. #7
    Membre averti Avatar de icsor
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2008
    Messages : 258
    Points : 436
    Points
    436
    Par défaut
    Effectivement, vu comme ça, c'est plus jolie et assez simple.

    Merci beaucoup pour ta solution.

  8. #8
    Membre éclairé Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Points : 773
    Points
    773
    Par défaut
    J'arrive après la bataille mais il me semble qu'une table externe avec une view filtrant uniquement ceux qui finissent par S ou N serait plus élégant et propre...

    Par extension deux views seraient encore plus propre, une view qui donne les enregistrements corrects et en opposition une view qui donne les incorrects (traitement applicatif de correction derrière peut-être).
    Philippe CEROU,

    Architecte Systèmes & Bases de données.

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

Discussions similaires

  1. Fichier de control pour ma base de données "Secours"
    Par lyl2011 dans le forum Administration
    Réponses: 2
    Dernier message: 19/07/2011, 11h07
  2. Vérification envoi de fichier avec controle taille
    Par kavdo34 dans le forum Shell et commandes GNU
    Réponses: 16
    Dernier message: 10/03/2010, 15h14
  3. Réponses: 5
    Dernier message: 01/02/2010, 20h50
  4. intégrer un fichier image dans une base de donnée?
    Par Lody dans le forum Requêtes
    Réponses: 9
    Dernier message: 16/03/2006, 19h08
  5. Enregistremenbt d'un fichier WORD dans une base de données
    Par yam49 dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/08/2004, 15h01

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