[SQL Server][RESOLU] Mise à jour de base de donnée

Mise à jour de base de donnée [SQL Server][RESOLU] - SQL/NoSQL - Programmation

Marsh Posté le 23-01-2007 à 11:42:21    

Bonjour,
 
Je vous expose mon problème.
 
J'ai une table X, sur laquelle je fais un BCP (pour exporter ma table sous un fichier texte).
 

Code :
  1. Microsoft.VisualBasic.Shell("bcp toto..client out C:\DB\Client.txt -w -T -S toto\sqlexpress


 
J'ai une table Temp sur laquelle je fais un delete :

Code :
  1. DELETE FROM Temp


 
Et sur laquelle j'importe la table X :

Code :
  1. BULK INSERT Temp FROM 'C:\DB\Client.txt' with (CODEPAGE = 'RAW')


 
J'ai une troisième table Y, qui elle va recevoir les informations de la table TEMP.
 
Si je fais un insert into pour la première fois, il n'y a pas de soucis, la table Y va avoir les informations de la table Temp.  
Le problème est lorsque de nouvelles informations sont incrites sur la tables Temp. J'imagine que vous le voyez déjà : je ne peux pas (et c'est logique) créer deux fois des valeurs déjà existantes. J'ai pensé à créer un ID mais le problème, c'est qu'en faite il n'y a pas qu'une table x mais plusieurs avec des valeurs bien differentes.  
 
Pour l'update il n'y a aucuns soucis, mais lorsque de nouvelles valeurs vont rentrées, je ne sais pas quelle condition appliquer à mon insert.  
 
Merci


Message édité par Lemminkainen le 23-01-2007 à 11:57:45

---------------
Que vois-tu quand tu fermes les yeux ?
Reply

Marsh Posté le 23-01-2007 à 11:42:21   

Reply

Marsh Posté le 23-01-2007 à 11:50:10    

Ca changera rien, mais remplace ton DELETE par un TRUNCATE : plus rapide.
 
Soit plus clair pour le reste.
 
A la base, je dirais de faire un truc du genre :
 

insert into y (id, val) from (select id, val from x where not exists (select null from y where y.id = x.id))

Message cité 1 fois
Message édité par MagicBuzz le 23-01-2007 à 11:50:25
Reply

Marsh Posté le 23-01-2007 à 11:52:28    

MagicBuzz a écrit :

Ca changera rien, mais remplace ton DELETE par un TRUNCATE : plus rapide.
 
Soit plus clair pour le reste.
 
A la base, je dirais de faire un truc du genre :
 

insert into y (id, val) from (select id, val from x where not exists (select null from y where y.id = x.id))



Merci beaucoup pour le DELETE. :jap:
 
Pour le reste, ta fonction repond parfaitement à ce que je veux. J'ai déjà essayé le NO Exist, mais surement avec une mauvaise syntaxe. Je vais essayer ça tout de suite. :jap:
 
Merci beaucoup.


---------------
Que vois-tu quand tu fermes les yeux ?
Reply

Marsh Posté le 23-01-2007 à 11:57:24    

Lemminkainen a écrit :

Merci beaucoup pour le DELETE. :jap:
 
Pour le reste, ta fonction repond parfaitement à ce que je veux. J'ai déjà essayé le NO Exist, mais surement avec une mauvaise syntaxe. Je vais essayer ça tout de suite. :jap:
 
Merci beaucoup.


 
Ton from est en trop, voila la requête qui marche :  
 

Code :
  1. insert into y (id, val) select id, val from x where not exists (select null from y where y.id = x.id)


 
Merci beaucoup.


---------------
Que vois-tu quand tu fermes les yeux ?
Reply

Marsh Posté le 23-01-2007 à 12:01:31    

ha oui en effet, y'a pas de from dans le insert :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed