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

Vue hybride

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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 258
    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 confirmé 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
    Par défaut
    Que est-ce qu'il faut faire si le caractère n'est ni S ni N ?

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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 258
    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 confirmé 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
    Par défaut
    Utiliser une table externe ça ne te convient pas ?

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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 258
    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 confirmé 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
    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');

+ 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