Bonjour,
Je travaille sur une base ORACLE 10g.
Je souhaite exporter des données venant des tables de cette base vers un fichier Excel.
Pourriez-vous SVP m'indiquer comment faire ?
Je vous remercie par avance
Bonjour,
Je travaille sur une base ORACLE 10g.
Je souhaite exporter des données venant des tables de cette base vers un fichier Excel.
Pourriez-vous SVP m'indiquer comment faire ?
Je vous remercie par avance
Salut,
commence par faire une recherche sur ce même forum...
cette question a déjà été abordée maintes fois !
un petit bout de code en PL/SQL que je me suis amusé à écrire pour produire un fichier au format CSV
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
51
52
53
54
55 create or replace procedure CSV(query varchar2) is curid NUMBER; desctab DBMS_SQL.DESC_TAB; colcnt NUMBER; namevar VARCHAR2(4000); begin curid := dbms_sql.open_cursor; dbms_sql.parse(curid, query, dbms_sql.NATIVE); DBMS_SQL.DESCRIBE_COLUMNS(curid, colcnt, desctab); FOR i IN 1 .. colcnt LOOP DBMS_SQL.DEFINE_COLUMN(curid, i, namevar,4000); END LOOP; if DBMS_SQL.execute(curid) = 0 THEN FOR i IN 1 .. colcnt LOOP if (i>1) then dbms_output.put(';'); end if; dbms_output.put(desctab(i).col_name); END LOOP; dbms_output.new_line; WHILE DBMS_SQL.FETCH_ROWS(curid) > 0 LOOP FOR i IN 1 .. colcnt LOOP if (i>1) then dbms_output.put(';'); end if; DBMS_SQL.COLUMN_VALUE(curid, i, namevar); if (namevar is not null) then dbms_output.put(namevar); end if; END LOOP; dbms_output.new_line; END LOOP; END IF; end; / execute csv('select * from emp'); EMPNO;ENAME;JOB;MGR;HIREDATE;SAL;COMM;DEPTNO 7369;SMITH;CLERK;7902;17-DEC-80;800;;20 7499;ALLEN;SALESMAN;7698;20-FEB-81;1600;300;30 7521;WARD;SALESMAN;7698;22-FEB-81;1250;500;30 7566;JONES;MANAGER;7839;02-APR-81;2975;;20 7654;MARTIN;SALESMAN;7698;28-SEP-81;1250;1400;30 7698;BLAKE;MANAGER;7839;01-MAY-81;2850;;30 7782;CLARK;MANAGER;7839;09-JUN-81;2450;;10 7788;SCOTT;ANALYST;7566;19-APR-87;3000;;20 7839;KING;PRESIDENT;;17-NOV-81;5000;;10 7844;TURNER;SALESMAN;7698;08-SEP-81;1500;0;30 7876;ADAMS;CLERK;7788;23-MAY-87;1100;;20 7900;JAMES;CLERK;7698;03-DEC-81;950;;30 7902;FORD;ANALYST;7566;03-DEC-81;3000;;20 7934;MILLER;CLERK;7782;23-JAN-82;1300;;10
si tu as une version récente d'Excel, tu peux importer du XML. C'est plus stable.
C'est tout simple, non?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 set echo off lin 9999 pages 0 long 999999 longc 999999 feedb 9999 head off trims on spool EMP.xml prompt <?xml version="1.0"?> prompt <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> select * from table(xmlsequence(cursor(select * from emp))); prompt </root> spool off
Bonjour,
Merci à tous pour vos réponses. Je vais tester toutes vos solutions.
Bonne journée
Bonjour,Envoyé par laurentschneider
Après avoir créée la procedure csv , et après avoir executé la procedure avec une requête comme argument, j'ai ça comme message: "Procédure PL/SQL terminée avec succès." Où est mon fichier? Comment faire pour y accéder? Je suis débutant et je ne trouve pas dans le code que vous avez écrit la destination ou le nom du fichier de sortie.
ps:J'utilise une base de données oracle. Ma procédure a bien été stockée dans la base.
Merci d'avance.
set serverout on size unlimited
Bonjour
ou est le fichier de sortie quel emplacement ?
J'aimerez chosir mon nom de fichier et mon emplacement
merci
Partager