[Oracle 10G] Données vers fichier Excel

Données vers fichier Excel [Oracle 10G] - SQL/NoSQL - Programmation

Marsh Posté le 18-03-2010 à 11:09:27    

Bonjour à tous,
 
Je suis actuellement sur une base Oracle.
Je souhaite extraire mes données vers un fichier Excel.
 
J'ai trouvé http://www.astral-consultancy.co.u [...] .cgi?11270
 
Ma question :
 - Est-il possible de créer un fichier Excel à partir d'oracle directement dans un répertoire?
 
Je ne souhaite pas utiliser DAD (Data Acces Descriptor) qui impose l'installation d'Apache.
 
Merci pour vos réponses.

Reply

Marsh Posté le 18-03-2010 à 11:09:27   

Reply

Marsh Posté le 18-03-2010 à 11:47:15    

comment ça directement à-partir d'oracle dans un répertoire? Sur le serveur?
Tu dois pouvoir générer du csv en pl/sql et l'écrire dans un répertoire avec des packages du style utl_file, mais c'est moche.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 18-03-2010 à 12:37:06    

Oui utl_file est une solution, mais il faut faire attention à certaines choss qui sont devenues obsolètes, et faire attention aux privilèges.
 
Sinon, il y dbms_output, mais il faut faire attention à la taille du buffer.
 
Sinon, il y a le banal spool avec sqlplus, qui n'est pas obsolète du tout, et n'a pas de restriction majeure, bien qu'il soit très vieux et très simple d'utilisation.

Reply

Marsh Posté le 18-03-2010 à 13:22:15    

utl_file n'est pas très recommandé, car cela nécessite des modifs. dans le fichier init, et en général les admins. le considèrent comme une faille de sécurité
 
sinon tu peux utiliser des applications tierces qui le font de manière natives comme SQL Developer, ou encore bidouiller un script
 
en perl, ca se fait en moins de 50 lignes

Reply

Marsh Posté le 18-03-2010 à 13:39:08    

Merci de vos réponses.
 
Je vais être plus explicite.
Mon but, j'ai une procédure stockée qui me renvoie un tableau.
Je veux pouvoir récupérer à la fin un fichier Excel contenant ces données sur le serveur .
 
En attendant je vais regardé:
- utl_file
- dbms_output
 
Je veux le faire par SQL pour un gain de temps.
Il est possible que je récupère au maximum 3 onglets de 65000 dans des cas exceptionnel.
J'ai fait des tests en passant par le C# mais le temps de construction du fichier Excel est beaucoup trop long.

Reply

Marsh Posté le 18-03-2010 à 14:29:36    

sinon t'as l'alternative perl ou VBS
franchement j'ai un script Perl -> CSV de moinsd e 50 lignes qui est capable de cracher des millions de lignes sans problèmes

Reply

Marsh Posté le 18-03-2010 à 14:54:12    

Ok Couak.
 
Je n'ai jamais fait de Perl.
Tous les conseils sont les bien venus.
A ce sujet est-ce que le Perl gère les onglets.
Peux-tu me dire de quelles manières tu utilises Perl avec Oracle?
 
Je suppose qu'il faut faire des installations particulières pour le Perl, je regarde.

Message cité 1 fois
Message édité par madkane le 18-03-2010 à 14:59:26
Reply

Marsh Posté le 18-03-2010 à 15:00:27    

Citation :

[...] gère les onglets [?]


Avec le format csv, on obtient un classeur qui ne contient qu'une seule feuille, donc un seul onglet.
Pour avoir plusieurs onglets, il faudrait générer un fichier ".xls" ou ".xlsx", en faisant de l'automation ou autre chose, mais qui n'est pas possible à faire depuis du PL/SQL ordinaire.

Reply

Marsh Posté le 18-03-2010 à 15:59:37    

madkane a écrit :

Ok Couak.
 
Je n'ai jamais fait de Perl.
Tous les conseils sont les bien venus.
A ce sujet est-ce que le Perl gère les onglets.
Peux-tu me dire de quelles manières tu utilises Perl avec Oracle?
 
Je suppose qu'il faut faire des installations particulières pour le Perl, je regarde.


sur un Unix, c'est tellement indispensable que c'est en général installé par les admin
suivant les OS (genre solaris) c'est installé par défaut
 
sous windows, Oracle inclut de base un interpréteur Perl, d'ailleurs pas mal de scripts sont fait en perl dont notament opatch (l'utilitaire pour gérer des patches intermédiaires d'oracle)
 
avec le module perl adéquat, tu peux créer des fichiers excel avec pluisuers feuilles

Reply

Marsh Posté le 19-03-2010 à 11:38:21    

Merci Couak.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed