Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1495 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requete pour mettre à jour une partie d'un champ

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requete pour mettre à jour une partie d'un champ

n°1778116
sebalcoomi​x
Posté le 27-08-2008 à 09:01:16  profilanswer
 

J'ai besoin de la requete de la mort ORACLE :  
 
J'ai un champ "fichier" dans ma table "sauvegarde" avec l'adresse du fichier de sauvegarde.  
 
Je dois migrer de serveur (SERVEUR1 et NAS1 vers 1 seul NEW-SERVER) :  
 
Le champ est rempli comme suit :  
 
Select fichier from sauvegarde :  
 
FICHIER  
----------------------------------------
\\SERVEUR1\LOGICIEL\backup1.bak  
\\SERVEUR1\LOGICIEL\backup2.bak  
\\NAS1\LOGICIEL\backup3.bak
 
Je voudrais faire une requete pour obtenir :  
 
FICHIER  
----------------------------------------
\\NEW-SERVER\LOGICIEL\backup1.bak
\\NEW-SERVER\LOGICIEL\backup2.bak
\\NEW-SERVER\LOGICIEL\backup3.bak
 
 
Voili j 'espere avoir ete clair....  
 
Merci d avance  
 
Seb

mood
Publicité
Posté le 27-08-2008 à 09:01:16  profilanswer
 

n°1778127
olivthill
Posté le 27-08-2008 à 09:38:25  profilanswer
 

Plutôt qu'une requête de la mort qui tue, pourquoi ne pas faire plusieurs petites requêtes gentillettes ?
 
1. La première requête va récupérer chaque champ.
SELECT le_champ, la_clef INTO :la_variable, :id_la_ligne FROM la_table
 
2. Quelques lignes PL/SQL ou C ou autre va remplacer changer le contenu du champ.
la_partie_constante := substr(le_champ, instr(la_variable, 'LOGICIEL', 1), 500);
la_nouvelle_variable := '\\NEW-SERVER' || la_partie_constante;
 
3. Une dernière requête fait l'update en base.
UPDATE la_table SET le_champ = :la_nouvelle_variable WHERE la_clef = :id_la_ligne;
 
Et le tour est joué !

n°1778246
vttman2
Je suis Open ...
Posté le 27-08-2008 à 13:30:34  profilanswer
 

Requete de la mort I
No garanty ...
 
=>
Par exemple  
select replace(replace(fichier,'SERVEUR1','NEW-SERVER'),'NAS','NEW-SERVER') from sauvegarde
 
Si ok  
=>
update sauvegarde
set fichier = replace(replace(fichier,'SERVEUR1','NEW-SERVER'),'NAS','NEW-SERVER')  
where fichier <> replace(replace(fichier,'SERVEUR1','NEW-SERVER'),'NAS','NEW-SERVER')  
 
Un truc dans le style mortuaire quoi ... ;-)
 


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
n°1778280
sebalcoomi​x
Posté le 27-08-2008 à 14:07:08  profilanswer
 

J jadore ce genre de requete de la mort avec plein de replace dedans.. Je viens de reprendre un poste de DBA mais bon depuis 5 ans que j ai pas ouvert un SQL je lutte un peu mais ca revient en fait... Merci  
 
Seb

n°1778330
MagicBuzz
Posté le 27-08-2008 à 15:16:52  profilanswer
 

le where sert à rien. éventuellement, le remplacer par un "not (fichier like '//SERVEUR1%' or fichier like '//NAS%')" qui sera plus performant
 
pour simplifier la clareté de la chose, j'aurais fait deux updates successifs, ça évite les replace imbriqués qui sont... relativement moyenement pas très lisible ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requete pour mettre à jour une partie d'un champ

 

Sujets relatifs
Requete SQL DatetimeAS3 : netStream -> afficher la premiere image et mettre sur pause
[SQL]trié plusieur count dans une requete unionEnvoyer requete moteur de recherche
Comment créer une vérif pour une requeteProblème de requete...
Aide pour une requête de maintenanceRequete site web à la manière d'excel mais en plus grand
[VBA] requete SQL dans un programme VB pour publipostage vers word 
Plus de sujets relatifs à : Requete pour mettre à jour une partie d'un champ


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR