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*Loader Oracle Discussion :

sqlloader et séquence pour importer un fichier csv


Sujet :

SQL*Loader Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2008
    Messages : 5
    Points : 6
    Points
    6
    Par défaut sqlloader et séquence pour importer un fichier csv
    Bonjour,

    Je dois importer un fichier csv dans une table.

    La table est la 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
     
    CREATE TABLE CCM_IMPORT_CER
    (
      IC4_ID          NUMBER,
      IC1_CODE        NUMBER(15),
      CTC_CODE        NUMBER(10),
      CTC_RAIS        VARCHAR2(100 CHAR),
      CDR_CP          VARCHAR2(8 CHAR),
      CDR_VILLE       VARCHAR2(40 CHAR),
      CER_LIB         VARCHAR2(30 CHAR),
      CER_CODE        NUMBER(2),
      ACC_DATEOPT     DATE,
      IC1_CER_TOKILL  NUMBER(1),
      IC1_CER_KILLED  NUMBER(1),
      INTEGRATED_AT   VARCHAR2(15 CHAR),
      CREATED_AT      DATE,
      CREATED_BY      NUMBER(6)
    )
    la séquence est créée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    --
    -- CCM_IMPORT_CER_SEQ  (Sequence) 
    --
    CREATE SEQUENCE CCM_IMPORT_CER_SEQ
      START WITH 1
      MAXVALUE 9999999999999999999999999999
      MINVALUE 1
      NOCYCLE
      NOCACHE
      ORDER;

    Le fichier de contrôle est le suivant
    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
     
    LOAD DATA
    INFILE "${DIRCSV}${uti_code}_CCM_IMPORT_CER_${integrated_at}.csv"
    APPEND INTO TABLE CCM_IMPORT_CER
    FIELDS terminated by ";" Optionally enclosed by '"' TRAILING NULLCOLS
    (
     IC4_ID "ccm_import_cer_seq.nextval",
     IC1_CODE        ,
     CTC_RAIS        ,
     CDR_CP          ,
     CDR_VILLE       ,
     CER_LIB         ,
     CER_CODE        ,
     ACC_DATEOPT     ,
     IC1_CER_TOKILL ,
     IC1_CER_KILLED
    )
    Le fichier csv à importer est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    1;Raison sociale 1;85600;Montaigu;Attestation de capacité;74;;0;0
    3;Raison sociale 3;85602;Montaigu;Attestation de capacité;74;;0;0
    3;Raison sociale 3;85602;Montaigu;Dolce vita;61;;0;0
    4;Raison sociale 4;85603;Montaigu;Eco artisan;72;;0;0
    4;Raison sociale 4;85603;Montaigu;Eco artisan;72;;0;0
    5;Raison sociale 5;85604;Montaigu;Suivi Guillot;7;;0;0
    L'import me donne ça en .log
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    Table CCM_IMPORT_CER, loaded from every logical record.
    Insert option in effect for this table: APPEND
    TRAILING NULLCOLS option in effect
     
       Column Name                  Position   Len  Term Encl Datatype
    ------------------------------ ---------- ----- ---- ---- ---------------------
    IC4_ID                              FIRST     *   ;  O(") CHARACTER
        SQL string for column : "ccm_import_cer_seq.nextval"
    IC1_CODE                             NEXT     *   ;  O(") CHARACTER
    CTC_RAIS                             NEXT     *   ;  O(") CHARACTER
    CDR_CP                               NEXT     *   ;  O(") CHARACTER
    CDR_VILLE                            NEXT     *   ;  O(") CHARACTER
    CER_LIB                              NEXT     *   ;  O(") CHARACTER
    CER_CODE                             NEXT     *   ;  O(") CHARACTER
    ACC_DATEOPT                          NEXT     *   ;  O(") CHARACTER
    IC1_CER_TOKILL                       NEXT     *   ;  O(") CHARACTER
    IC1_CER_KILLED                       NEXT     *   ;  O(") CHARACTER
    Record 1: Rejected - Error on table CCM_IMPORT_CER, column IC1_CODE.
    ORA-01722: invalid number
     
    Record 2: Rejected - Error on table CCM_IMPORT_CER, column IC1_CODE.
    ORA-01722: invalid number
     
    Record 3: Rejected - Error on table CCM_IMPORT_CER, column IC1_CODE.
    ORA-01722: invalid number
     
    Record 4: Rejected - Error on table CCM_IMPORT_CER, column IC1_CODE.
    ORA-01722: invalid number
     
    Record 5: Rejected - Error on table CCM_IMPORT_CER, column IC1_CODE.
    ORA-01722: invalid number
     
    Record 6: Rejected - Error on table CCM_IMPORT_CER, column IC1_CODE.
    ORA-01722: invalid number
     
    Table CCM_IMPORT_CER:
      0 Rows successfully loaded.
      6 Rows not loaded due to data errors.
      0 Rows not loaded because all WHEN clauses were failed.
      0 Rows not loaded because all fields were null.
     
     
    Space allocated for bind array:                 165120 bytes(64 rows)
    Read   buffer bytes: 1048576
     
    Total logical records skipped:          3
    Total logical records read:             6
    Total logical records rejected:         6
    Total logical records discarded:        0
    - Si je met en dernier la lecture de la colonne IC4_ID (pour la séquence), alors il intègre la 1ère ligne et les autres sont en erreur.
    - Si je met en dernier la colonne IC4_ID et que j'ajoute des ; à la fin de chaque ligne du csv alors il arrive à m'intégrer les lignes, mais je ne vois pas pourquoi il me demande cela étant donné que j'utilise l'option TRAILING NULLCOLS ?
    - Si je met IC4_ID EXPRESSION "ccm_import_cer_seq.nextval", ça ne fonctionne pas non plus.

    Qu'est ce que j'ai bien pu zapper pour intégrer correctement ce fichier csv ?

    Merci pour votre aide.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2008
    Messages : 5
    Points : 6
    Points
    6
    Par défaut sqlloader ok
    Je suis passé par des soins palliatifs ;-) sur les fichiers csv en ajoutant un ; en fin de ligne et en supprimant les CTRL+M et cela fonctionnait, mais pour 1 des fichiers, j'avais quand même des accents mal intégrés, ce qui m'a intrigué.

    Finalement la solution, et sans même utiliser les ajouts de ; et suppression de CTRL+M, c'était de bien définir la variable NLS_LANG dans mon script shell
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NLS_LANG=FRENCH_FRANCE.WE8MSWIN1252
    et maintenant tout roule.

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

Discussions similaires

  1. [AC-2010] [débutant] Code pour automatiser l'import de fichiers csv
    Par Jul38 dans le forum VBA Access
    Réponses: 12
    Dernier message: 16/12/2011, 08h49
  2. Réponses: 5
    Dernier message: 17/04/2011, 10h52
  3. Importer un fichier CSV dans un clientdataset ?
    Par mls dans le forum Bases de données
    Réponses: 7
    Dernier message: 15/04/2005, 12h35
  4. [Conseil] Import de fichier CSV vers MySQL
    Par ShinJava dans le forum JDBC
    Réponses: 6
    Dernier message: 15/03/2005, 19h14
  5. Importation de fichier CSV vers une base Interbase
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 15/03/2005, 15h18

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