1. #1
    Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    décembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2015
    Messages : 4
    Points : 4
    Points
    4

    Par défaut Importer un fichier csv

    Bonjour,

    Voici mon problème:

    Je souhaite importer dans une table un fichier csv à l'aide d'une procédure PL/SQL.

    J'ai créé une procédure dans lequel j'ai déclaré en paramètre le chemin et le fichier csv.

    Mon problème est le suivant lorsque je lance la procédure celui-ci me renvoie les erreurs suivantes:
    ORA-29280: chemin de répertoire non valide
    ORA-06512: à "SYS.UTL_FILE", ligne 29
    ORA-06512: à "SYS.UTL_FILE", ligne 448
    Pour récupérer le chemin j’utilise cette méthode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       FICHIER_dir :=VARCHAR2(200) := 'D:/Users/Desktop/fichier'; 
        Fichier_in   Varchar2(128) := 'export_utilisateur.csv' ;
     
       Infile := UTL_FILE.Fopen (FICHIER_dir ,Fichier_in,'r');
    D'après ce que j'ai lu sur différents sites je dois créer le répertoire de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     CREATE OR REPLACE DIRECTORY AS 'D:/Users/Desktop/fichier';
    le problème est que j'obtiens cette erreur:

    Erreur SQL : ORA-01031: privilèges insuffisants
    01031. 00000 - "insufficient privileges"
    Je n'ai pas les accès nécessaires et ce serait trop long à demander entre les différentes personnes.

    Est-ce qu'il y aurait un moyen d'importer des données depuis un fichier csv avec en passant en paramètre le chemin de mon pc ?

    Merci pour vos réponse,

  2. #2
    Expert Oracle confirmé

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    mars 2003
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : mars 2003
    Messages : 335
    Points : 640
    Points
    640

    Par défaut

    Bonjour,

    Il existe aussi les "tables externes" sous Oracle, mais là encore il te faut un Directory.

    Donc la seule solution qu'il te reste, c'est d'utiliser SQL*Loader. Tu trouveras sur Internet de nombreux articles sur cet utilitaire sqlloader.exe qui fait partie du client Oracle.

  3. #3
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2007
    Messages
    5 524
    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 524
    Points : 11 285
    Points
    11 285

    Par défaut

    Citation Envoyé par rouardg Voir le message
    ...
    Donc la seule solution qu'il te reste, c'est d'utiliser SQL*Loader.
    SQL Developer contient un utilitaire d'import d'un fichier csv.

  4. #4
    Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    décembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2015
    Messages : 4
    Points : 4
    Points
    4

    Par défaut

    Bonjour,

    Merci pour vos réponse,

    Mais, je dois le faire en pl/sql.

    Est-ce que quelqu'un a une idée de comment faire? Peut-être inclure SQL*Loader dans la procédure PL/SQL? si c'est possible, comment le réaliser?

    Merci pour vos réponse,

  5. #5
    Expert Oracle confirmé

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    mars 2003
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : mars 2003
    Messages : 335
    Points : 640
    Points
    640

    Par défaut

    Bonjour,

    Non, SQL*Loader est un utilitaire comme l'est SQL*Plus, et comme le sont les outils d'import /export. On ne peut pas l'appeler en PL/SQL.

    Au final, à un moment il faut arrêter le délire, et que l'on vous donne le droit de créer un Directory Oracle. Et si on ne veut pas, qu'un DBA vous crée ce répertoire et vous le mette à disposition.

    Sinon vous pouvez tourner en rond pendant des lustres:-(

  6. #6
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2007
    Messages
    5 524
    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 524
    Points : 11 285
    Points
    11 285

    Par défaut

    Citation Envoyé par hazemi Voir le message
    ...Mais, je dois le faire en pl/sql.
    Non ça sera une pure pertes de temps.

    Citation Envoyé par hazemi Voir le message
    ...

    Est-ce que quelqu'un a une idée de comment faire? Peut-être inclure SQL*Loader dans la procédure PL/SQL? si c'est possible, comment le réaliser?
    Oracle à ajouter les tables externes précisément pour répondre à ce type de demande. Mais vous retombez sur le même problème de directory.

    Ensuite si vous y tenez vraiment vous pouvez écrire un program dans votre langage préféré qui à partir de votre machine pourrais appeler dans une boucle une procédure PL/SQL qui recevra via un paramètre une chaines des caractères pour qu'ils la découpe en suivant le caractère de séparation et insère tout dans une table.

  7. #7
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    septembre 2007
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2007
    Messages : 792
    Points : 1 643
    Points
    1 643
    Billets dans le blog
    4

    Par défaut

    Le package UTL_FILE s'exécute au niveau serveur. il faut tu auras droit d’accès sur le disque serveur.
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

Discussions similaires

  1. import de fichier csv
    Par dev7 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 15/02/2006, 07h23
  2. Import de fichier CSV automatique dans Access
    Par Jmar dans le forum Access
    Réponses: 4
    Dernier message: 20/01/2006, 10h48
  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