Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/06/2011, 11h10   #1
Membre actif
 
Inscription : mai 2004
Messages : 725
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 725
Points : 193
Points : 193
Par défaut Comment mettre à jour une table à partir d'un fichier Excel ?

Bonjour,


J'aimerais créer un script pour, à partir d’une table Excel fournie pour chaque schéma et qui s’appelle AUTEURS_TROUVES, mettre à jour la table DOCUMENT ainsi :
- DOCUMENT.ID_SIGNATAIRE = AUTEURS_TROUVES.ID_AUTEUR_IDENTIFIE
- DOCUMENT.ID_SIGNATAIRE_DELEGUE = AUTEURS_TROUVES.ID_OPERATEUR (ou DOCUMENT.IDOPERATEUR)
pour tous les enregistrements où :
- DOCUMENT.AUTEUR = AUTEURS_TROUVES.AUTEUR
- DOCUMENT.IDOPERATEUR = AUTEURS_TROUVES.ID_OPERATEUR
- DOCUMENT.ID_SIGNATAIRE = AUTEURS_TROUVES.ID_OPERATEUR (ou DOCUMENT.IDOPERATEUR)


Merci
Battosaiii est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 12h55   #2
Membre du Club
 
Inscription : décembre 2006
Messages : 119
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 119
Points : 61
Points : 61
Bonjour,

dans ces cas là le plus simple est d'utiliser SQL*Loader pour charger les données dans des tables temporaires de même structure que les fichiers csv, puis de faire un script SQL qui charge avec la règle voulue les données depuis les tables temporaires vers les tables finales.

Cdlt.
__________________
La différence entre la théorie et la pratique, c'est qu'en théorie il n'y a pas de différence entre la théorie et la pratique. En pratique, si.
pat29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 13h53   #3
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 311
Points : 5 810
Points : 5 810
Utilisez les tables externes.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 14h09   #4
Membre habitué
 
Avatar de Ozeil
 
Homme Léo LR
Étudiant
Inscription : juin 2011
Messages : 81
Détails du profil
Informations personnelles :
Nom : Homme Léo LR
Âge : 19
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 81
Points : 124
Points : 124
J'ai eu le même soucis récemment pour un projet et j'ai utilisé le SQL plus, aussi appelé PL SQL.
Ozeil est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 10/06/2011, 14h14   #5
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 311
Points : 5 810
Points : 5 810
Citation:
Envoyé par Ozeil Voir le message
J'ai eu le même soucis récemment pour un projet et j'ai utilisé le SQL plus, aussi appelé PL SQL.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 14h15   #6
Membre habitué
 
Avatar de Ozeil
 
Homme Léo LR
Étudiant
Inscription : juin 2011
Messages : 81
Détails du profil
Informations personnelles :
Nom : Homme Léo LR
Âge : 19
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 81
Points : 124
Points : 124
Citation:
Envoyé par mnitu Voir le message
Je me suis trompé?
(J'ai découvert ce langage cette semaine... )
Ozeil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 14h53   #7
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
PL/SQL est un langage de développement propriétaire d'Oracle qui encapsule (pas tout à fait complètement, mais passons) et enrichi le SQL.

SQL*Plus est une outil qui permet de manier SQL et PL/SQL.

C'est comme si vous disiez que C++ et Visual Studio c'est pareil !
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 14h54   #8
Membre habitué
 
Avatar de Ozeil
 
Homme Léo LR
Étudiant
Inscription : juin 2011
Messages : 81
Détails du profil
Informations personnelles :
Nom : Homme Léo LR
Âge : 19
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 81
Points : 124
Points : 124
Citation:
Envoyé par Waldar Voir le message
PL/SQL est un langage de développement propriétaire d'Oracle qui encapsule (pas tout à fait complètement, mais passons) et enrichi le SQL.

SQL*Plus est une outil qui permet de manier SQL et PL/SQL.

C'est comme si vous disiez que C++ et Visual Studio c'est pareil !
Je viens de le découvrir, on peut pas tout sa voir
Ozeil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 15h01   #9
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 311
Points : 5 810
Points : 5 810
Citation:
Envoyé par Ozeil Voir le message
Je viens de le découvrir, on peut pas tout sa voir
[Edit]...[/Edit]

@Waldar que est ce-que tu veux dire par « ...encapsule pas tout à fait complètement … le SQL »
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 10/06/2011, 15h23   #10
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Que la plupart des fonctions SQL existent en PL/SQL :
Code :
1
2
3
4
5
6
7
declare
    v$_toto varchar2(20);
begin
    v$_toto := greatest('A', 'B');
    dbms_output.put_line(v$_toto);
end;
/
Mais pas toutes :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
declare
    v$_toto1 XMLType;
    v$_toto2 varchar2(20);
begin
    v$_toto1 := XMLElement(a, 'B');
    v$_toto2 := v$_toto1.getClobVal();
    dbms_output.put_line(v$_toto2);
end;
/
 
ORA-06550: Ligne 4, colonne 16 :
PLS-00201: l identificateur 'XMLELEMENT' doit être déclaré
ORA-06550: Ligne 4, colonne 5 :
PL/SQL: Statement ignored
Il faut ruser un peu :
Code :
1
2
3
4
5
6
7
8
9
10
11
declare
    v$_toto1 XMLType;
    v$_toto2 varchar2(20);
begin
    SELECT XMLElement(a, 'B') INTO v$_toto1 FROM dual; 
    v$_toto2 := v$_toto1.getClobVal();
    dbms_output.put_line(v$_toto2);
end;
/
 
<A>B</A>
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 16h20   #11
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 311
Points : 5 810
Points : 5 810
Bref, c'est documenté! SQL Functions in PL/SQL Expressions
Oracle a connu pire que ça : avant la version 9 il y avait un moteur SQL différent dans PL/SQL que celui de la base. Conséquence : des requêtes qui fonctionait sur sqlplus ne compilait pas en PL/SQL !
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/06/2011, 16h39   #12
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Bien vu pour le lien sur la doc !
Je ne voulais rien dire d'autre que :
Citation:
In PL/SQL expressions, you can use all SQL functions except:...
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 10h48   #13
Membre actif
 
Inscription : mai 2004
Messages : 725
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 725
Points : 193
Points : 193
Merci de vos reponses interessantes.
Je suis en train de convertir le fichier xls en csv.
Ensuite j'utilise sqlloader pour charger le csv dans la base oracle.
Battosaiii est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h48.


 
 
 
 
Partenaires

Hébergement Web