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

Import/Export Oracle Discussion :

Import de champs spécifiés à partir d'un CSV dans une table Oracle [Fait]


Sujet :

Import/Export Oracle

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Par défaut Import de champs spécifiés à partir d'un CSV dans une table Oracle
    Bonjour,
    D'abord, Bonne année et meilleurs voeux à tout le monde.

    J'ai un fichier csv que je peux représenter comme suit :
    1;"Dupont";"Durand";"Réseau"
    2;"Jacques";"Durand";"Oracle"
    3;"Walou";"Toto";"Maintenance"
    ...
    J'ai une table sous oracle 10g qui a la structure suivante :
    Nom varchar2(255)
    Prenom varchar2(255)

    Je veux charger seulement le 2ème et 3ème champ du fichier csv dans la table.
    J'utilise SqlLoader pour les chargement dans les cas où la table a la même structure que le fichier (même nombre de champs) mais cette fois ce n'est pas le cas !

    D'avance, merci de votre aide.

    Cordialement

  2. #2
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Bonjour,

    tu as filler

    http://asktom.oracle.com/tkyte/SkipCols/index.html

    Bonne année

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Par défaut
    Merci pour la réponse.

    Pour recharger tout le fichier my_file dans la table my_table, voici le code que j'utilise :

    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
    CREATE OR REPLACE DIRECTORY indicateurs AS 'D:\oracle\indic';
    CREATE TABLE my_table (
    id number, 
    nom varchar2(255), 
    prenom varchar2(255),
    specialite varchar2(255)
    )
    ORGANIZATION EXTERNAL
    (TYPE ORACLE_LOADER
    DEFAULT DIRECTORY indicateurs
    ACCESS PARAMETERS
    (
    RECORDS DELIMITED BY NEWLINE
    CHARACTERSET US7ASCII
    BADFILE indicateurs:'file.bad'
    LOGFILE indicateurs:'file.log'
    FIELDS TERMINATED BY ';'
    OPTIONALLY ENCLOSED BY '"'
    )
    LOCATION ('my_file.csv'))
    REJECT LIMIT UNLIMITED PARALLEL;
    Comment dois-je faire pour recharger que le nom et le prénom par exemple ?

  4. #4
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Bonjour,

    Si tu veux skipper , c'est sqllaoder qu'il faut utiliser

    voici un lien pour un ancien poste pour table externe : ce n'est pas possible

    http://www.developpez.net/forums/d20...s-skip-column/

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Par défaut
    Merci pour les réponses pertinentes

    J'ai un autre souci qui apparaît ! j'ai importé les données dans la table mais j'ai des caractère du "¿" à place des "é" "è" "à" "ç"...

    Avez-vous des idées

    Merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Par défaut
    J'ai modifié les paramètres d'intialisation de la base de données via un trigger qui s'exécute à la connexion à la BDD dont voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    execute immediate 'ALTER SESSION SET NLS_LANGUAGE="FRENCH"'; 
    execute immediate 'ALTER SESSION SET NLS_TERRITORY="FRANCE"'; 
     
    execute immediate 'ALTER SESSION SET NLS_DATE_FORMAT="DD/MM/RRRR"'; 
    execute immediate 'ALTER SESSION SET NLS_TIMESTAMP_FORMAT="DD/MM/RRRR HH24:MI:SSXFF"';
    J'ai refais le chargement mais j'ai toujours le caractère "¿"

  7. #7
    Membre éprouvé
    Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2003
    Messages : 94
    Par défaut
    C'est un problème de charset, il y a 1 différence de charset entre le fichier plat à charger dans ORACLE et le charset défini pour la base

    Dans NLS_DATABASE_PARAMETERS pour le paramètre NLS_CHARACTERSET, tu récupère le CHARSET qui vaut par exemple WE8ISO8859P1 pour ISO 1 ou LATIN 1.

    si le fichier csv est en UTF8 ou autre codage ça explique les ? ou les A tilda ou tout autre de caractère non conforme pour tout ce qui est accentué
    y compris ç, °

    2 solutions :
    1) Convertir le fichier en entrée (par iconv si tu es sur de l'UNIX)
    iconv -f utf8 -t latin1 FichierOrigin.csv -o FichierTransforme.csv
    (passe de UTF8 à latin1)

    2) Charger et mettre à jour ensuite (pas terrible, mais si c'est à faire 1 seule fois pourquoi pas )

    update MaTable set MonChp = (MonChp,'WE8ISO8859P1','UTF8')
    (passe de UTF8 à WE8ISO8859P1 == Latin1)

    Selecta

Discussions similaires

  1. Importer un fichier csv dans une table mdb
    Par pobrouwers dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 02/12/2007, 14h17
  2. Importer un fichier CSV dans une table mySQL
    Par crazydiver_e2 dans le forum Requêtes
    Réponses: 4
    Dernier message: 16/01/2007, 10h47
  3. Importer un txt (csv) dans une table mysql sur multimania
    Par minogttao dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/11/2006, 18h33
  4. Impossible d'importer un fichier csv dans une table sous MySQL
    Par manue85 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 20/04/2006, 12h06
  5. Comment importer un document CSV dans une table MySql ?
    Par magic8392 dans le forum Requêtes
    Réponses: 6
    Dernier message: 04/02/2005, 11h03

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