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

Oracle Discussion :

Importer un fichier depuis un FTP directement dans une table ?


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Décembre 2007
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Importer un fichier depuis un FTP directement dans une table ?
    Bonjour à tous,

    Je suis débutant sur Oracle (à peine un peu de SQL et de PL/SQL), et il m'a été confié un projet.

    Il faudrait, depuis un ftp quelconque, arriver à rapatrier un fichier (sans doute texte) et intégrer son contenu directement dans une table, le tout se faisant au travers d'une procédure PL/SQL.

    J'ai parcouru le net, et je n'ai pas trouvé la solution exacte à mon problème.

    En effet, si on regarde bien les solutions proposées, elles sont:

    - soit des solutions avec des fichiers locaux à transférer dans des tables (tables externes)
    - soit des utilisations d'objets (CLOB)
    - soit des usages de UTL_FILE mais qui sont restreints à des fichiers locaux ou sur la base
    - soit des usages de UTL_TCP

    (Voir pour les derniers usages le lien: http://www.oracle-base.com/articles/...PFromPLSQL.php)

    Le problème c'est que dans le dernier cas, on va créer des fichiers dans la base de données... or ce n'est pas ce que je veux: je veux seulement pouvoir lire le contenu d'un fichier (texte, "formaté" pour l'usage) situé sur un FTP quelconque, et prendre à la volée ses données pour remplir une table, éventuellement transitoire (on pourra faire le tri des données après coup).

    J'ai l'impression en lisant les solutions proposées qu'on en reste toujours à du fichier local qu'on va aller chercher (et je n'ai pas les droits d'administrateur...), soit à de la création de fichier dans la base oracle...

    Pourriez-vous m'éclairer ?
    Est-ce que quelque chose m'a échappé ?

    SQLLoader ne doit pas pouvoir non plus solutionner mon problème....

    Je suis donc un peu coincé.

    A moins qu'il ne faille faire ça en 2 étapes:
    - rapatriement des données depuis le FTP avec création d'un fichier dans la base oracle
    - parcours du fichier dans la base (table externe) pour intégrer son contenu dans des tables "calibrées" ?

    Merci de vos remarques.

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Le FTP n'est pas un protocole où l'on lit à la volée les datas.
    Donc récupère le fichier sur ton serveur de base, et importe par une table externe.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    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
    Le package en question contient le code qu'il te faut. Pour générer le fichier en local il doit lire les données avant, n'est pas vrai? Donc si tu analyse le code tu verras qu’il rapatrie tous dans un clob avant d’écrire dans le fichier. Il te reste à écrire le code qui à partir du clob fera le traitement que tu veux.

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Décembre 2007
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Tout d'abord merci de vos réponses.

    Comme je l'ai dit, mon gros problème vient du fait que je ne suis pas administrateur de la base de données et je ne sais pas (je le saurai dans les prochaines jours) si j'aurais accès ou non à des fichiers créés dans Oracle en dehors de mes tables.

    Peut-être suis-je en train de raconter des bétises (ma connaissance d'Oracle étant plus que sommaire) ?

    Néanmoins, je voudrais éviter la création d'un fichier "local" (sur la base) quelconque, je préférerais avoir un transvasement direct dans une table.

    Concernant le traitement de rapatriement des données, on peut se servir d'un buffer, n'y-a-t'il pas moyen d'intercepter des données à ce moment ?
    C'est à ça que je pensais.

    Pour les CLOB, j'y ai pensé, mais je suis un total béotien en la matière... comme pour le reste (bien qu'ayant un peu de Java à mon actif, et ces CLOBs m'y font sérieusement penser.. ).

  5. #5
    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
    Relisez ma réponse : je vous ai déjà dit que vous n’avez pas besoin de créer aucun fichier en local. Je vous ai déjà dit que si vous analysez le code vous allez voir que le contenu du fichier est d’abord récupère dans un clob. Donc, vous pouvez vous inspirer de l’exemple pour faire ce qui bon vous semble.

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/07/2012, 13h34
  2. Réponses: 28
    Dernier message: 10/05/2012, 11h18
  3. Réponses: 5
    Dernier message: 21/02/2007, 16h12
  4. Insertion directe dans une table
    Par zzinfo dans le forum SQL
    Réponses: 2
    Dernier message: 28/02/2006, 15h17
  5. Importer fichiers txt d'un dossier dans une table
    Par avantoux dans le forum Access
    Réponses: 16
    Dernier message: 28/12/2005, 12h13

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