Requete pour mettre à jour une partie d'un champ - SQL/NoSQL - Programmation
Marsh Posté le 27-08-2008 à 09:38:25
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é !
Marsh Posté le 27-08-2008 à 13:30:34
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 ... ;-)
Marsh Posté le 27-08-2008 à 14:07:08
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
Marsh Posté le 27-08-2008 à 15:16:52
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 ![]()
Marsh Posté le 27-08-2008 à 09:01:16
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