J'ai une liste de 100k identifiants dans un fichier. Je veux itérer ces ids:Insérer ou mettre à jour la table
pour chaque id
, vérifier si id
est dans une table:
- Le cas échéant, mettre à jour son
updated_date
drapeau - Sinon, ajoutez un nouveau record
(id, updated_date)
J'ai recherché et trouvé la clause MERGE
. L'inconvénient est, MERGE
nécessite les ID d'être dans une table. Je suis seulement autorisé à créer une table temporaire si nécessaire.
Est-ce que je peux me diriger dans la bonne direction? Ce doit être un script que je peux exécuter sur ma base de données, pas en code.
merge into MyTable x
using ('111', '222', all my ids) b
on (x.id = b.id)
when not matched then
insert (id, updated_date) values (b.id, sysdate)
when matched then
update set x.updated_date = sysdate;
EDIT: Je suis maintenant en mesure d'utiliser une table temporaire si c'est ma seule option.
Bonjour créer une table externe avec ce fichier ID 100k. Puis interrogez cette table externe en utilisant la clause de votre instruction de fusion et comparez avec les identifiants mytable. – Buddi