Bonjour a tous,
Est-il possible de charger dans une table Oracle des données depuis un fichier Excel avec des procedure stockées ?
Merci.
Bonjour a tous,
Est-il possible de charger dans une table Oracle des données depuis un fichier Excel avec des procedure stockées ?
Merci.
"Regarder vos pensées, elles deviennent des mots. Surveillez vos paroles, et elles deviennent des actions. Visionnez vos actions, elles deviennent des habitudes. Surveillez vos habitudes, elles deviennent du caractère. Regarder votre personnage, il devient votre destinée." (Frank Outlaw)
Non pas directement un fichier excel.
Tu peux le faire pour un fichier csv (rechercher utl_file)
More Code : More Bugs. Less Code : Less Bugs
Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP
Tu peux utiliser cette procédure stockée
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 create or replace procedure Import_CSV_ToOracleTable( p_table in varchar2,p_cnames in varchar2,p_dir in varchar2,p_filename in varchar2,p_delimiter in varchar2 default '|' )IS /************************************************************************************************ Description : Procedure permettant d'importer un fichier csv dans une table oracle Parametres : p_table -> Table destination, doit avec les memes champs que le fichier source .csv p_cnames -> liste des colonnes séparée par ',' exemple : col1,col2,col3 p_dir -> Repertoire du fichier source. Qu'on peut créer avec la fonction CREATE DIRECTORY d'oracle exemple : CREATE DIRECTORY MON_REPERTOIRE AS C:\Temp p_filename -> Nom du fichier avec l'extension exemple : 'monfichier.csv' p_delimiter -> Séparateur de champ pour chaque colonne de la requete exemple : ';' Auteur : ZINZINDOHOUE ETIENNE ***********************************************************************************************/ l_input utl_file.file_type; l_theCursor integer default dbms_sql.open_cursor; l_buffer varchar2(4000); l_lastLine varchar2(4000); l_status integer; l_colCnt number default 0; l_cnt number default 0; l_sep char(1) default NULL; l_errmsg varchar2(4000); BEGIN l_input := utl_file.fopen( p_dir, p_filename, 'r' ); l_buffer := 'insert into ' || p_table || ' values ( '; l_colCnt := length(p_cnames)-length(replace(p_cnames,',',))+1; for i in 1 .. l_colCnt loop l_buffer := l_buffer || l_sep || ':b'||i; l_sep := ','; end loop; l_buffer := l_buffer || ')'; dbms_sql.parse( l_theCursor, l_buffer, dbms_sql.native ); loop begin utl_file.get_line( l_input, l_lastLine ); exception when NO_DATA_FOUND then exit; end; l_buffer := l_lastLine || p_delimiter; for i in 1 .. l_colCnt loop dbms_sql.bind_variable( l_theCursor, ':b'||i, substr( l_buffer, 1, instr(l_buffer,p_delimiter)-1 ) ) ; l_buffer := substr( l_buffer, instr(l_buffer,p_delimiter)+1 ); end loop; begin l_status := dbms_sql.execute(l_theCursor); l_cnt := l_cnt + 1; exception when others then l_errmsg := sqlerrm; insert into badlog ( errm, data ) values ( l_errmsg, l_lastLine ); end; end loop; dbms_sql.close_cursor(l_theCursor); utl_file.fclose( l_input ); commit; --return l_cnt; END Import_CSV_ToOracleTable;
Etienne ZINZINDOHOUE
Billets-Articles
Si on passe par un fichier CSV, un simple mapping de table externe (10g) sera suffisant !
Email : http://scr.im/waldar
Consultant / formateur Oracle indépendant
Certifié OCP 12c, 11g, 10g ; sécurité 11g
Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration
Merci pour vos reponses rapides.
pouvez-vous me détaillé la procedure ?
j'ai pas compris le p_cnames !!
comment on fait appel par exmple avec ce fichier :
la table à les meme colonnes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ID | NOM | PRENOM | age | 1 | ZINZINDOHOUE | ETIENNE | 2000 | 2 | RIMAS | DEV | 500 |
et c'est possible d'executer directement la procedure dans Sql-Developer ? comment ?
Merci.
"Regarder vos pensées, elles deviennent des mots. Surveillez vos paroles, et elles deviennent des actions. Visionnez vos actions, elles deviennent des habitudes. Surveillez vos habitudes, elles deviennent du caractère. Regarder votre personnage, il devient votre destinée." (Frank Outlaw)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager