Bonjour,
je suis a la recherche des equivalent en MSSQL des fonctions MySQL suivante :
REPLACE
et
ON DUPLICATE KEY
Si qqun peux m'aider
Merci d'avance,
Cdlt
Bonjour,
je suis a la recherche des equivalent en MSSQL des fonctions MySQL suivante :
REPLACE
et
ON DUPLICATE KEY
Si qqun peux m'aider
Merci d'avance,
Cdlt
replace existe en sql serveur.
pour verification et complement d'information.
http://sqlpro.developpez.com/cours/sqlaz/fonctions/
Euh non on a du mal se comprendre
REPLACE Remplacement de caractères de MSSQL != REPLACE MySQL
Replace (MySQL) :
http://dev.mysql.com/doc/refman/5.0/fr/replace.html
En fait je chercher a eviter les doublons dans mes insertsREPLACE fonctionne exactement comme INSERT, sauf que si une vieille ligne dans la table à la même valeur qu'une nouvelle pour un index UNIQUE ou une PRIMARY KEY, la vielle ligne sera effacée avant que la nouvelle ne soit insérée. See Section 13.1.4, « Syntaxe de INSERT ».
desole, anthony, je ne connais pas la réponse à cette question.
Lol. Un update implique d'abord un select pour verification, puis un test conditionnelle, puis soit un insert soit un update...Je prefererais eviter en fait
Je suis surpris qu'il n'y ai pas d'equivalent MS de ces deux fonctions...
Au passage merci quand meme ylarvor
Je me demande si cela existe avec SQL Server.
Si ce n'est pas le cas, va falloir pondre quelques lignes de code
Pondres quelques lignes de codes ne me derange absolument pas, c'est juste que deja que je trouvais les performances de MS-SQL pitoyable par rapport a celle de MySQL...cela va encore empirer.
tout est relatifPondres quelques lignes de codes ne me derange absolument pas, c'est juste que deja que je trouvais les performances de MS-SQL pitoyable par rapport a celle de MySQL...cela va encore empirer.
mais bon, le replace mysql : il check si la clé existe ou pas et si elle existe il la supprime puis l'insere
si tu fais un select de la clé puis que dans un if tu inseres ou update, au niveau perf, je ne sais pas si ça va bcp de jouer. Passes par une proc stockée, ça te changera la vie au niveau perfs...
Ca m'interrese, peux tu m'en dire plus ?
Ceci dit en terme de performance, je suis deja a des milliers d'annee lumieres de MySQL ; en effet mysqlimport ou mysql load data supporte l'option replace, la ou bcp / bulk insert ne le permet pas. Et ca, deja, represente une perte de perfs gigantesque.
tes opérations sont faites sur des tables en innodb(avec journal) ou en myisam(pas de journal) ?
sinon pour revenir aux procs, cela peut t'être utile si tu gères tout ça à travers un langage autre que le sql... faudrait en dire plus
Véritable Blasphème mon cher anthony !Envoyé par Anthony.Desvernois
Tu ferais mieux de comparer ce qui est comparable :
SQL Serveur est un vrai SGBDR C/S c'est à dire qu'il supporte les procedures stockées, les triggers, les UDF et surtout la journalisation tandis que MySQL ne supporte rien de tout ca donc pas de notion de transaction je crois que c'est depuis la version 4.2 que l'éditeur mysql tente d'ajouter les fonctionalités d'un véritable SGBDR C/S et c'est ce que kagemaru veut te faire comprendre.
Mais je n'ai pas besoin de faire un débat là déssus. La solution se trouve devant toi, un UDF ou une SP, sinon pas de solution à ton problème.
Chaque éditeur implemente les fonctions à sa manière.
Le monde de la programmation est fait de beaucoups de compromis.
Bonne chance.
Bonne questions, j'indiquerais cela demainEnvoyé par kagemaru
Et bien, je fais du kornshell et je lance des requetes. A l'heure actuelle je suis oblige de parser chaque ligne de mon fichier, de tester si la ligne n'existe pas deja puis je l'insere (si besoin est) ce qui est extremement couteux comme tu t'en doutes. Si y a une autre solution je suis preneursinon pour revenir aux procs, cela peut t'être utile si tu gères tout ça à travers un langage autre que le sql... faudrait en dire plus
Tu as raison, j'aurai du preciser que MS-SQL etait a des annees lumieres de MySQL dans ce type d'operationVéritable Blasphème mon cher anthony !
Tu ferais mieux de comparer ce qui est comparable :
SQL Serveur est un vrai SGBDR C/S c'est à dire qu'il supporte les procedures stockées, les triggers, les UDF et surtout la journalisation tandis que MySQL ne supporte rien de tout ca donc pas de notion de transaction je crois que c'est depuis la version 4.2 que l'éditeur mysql tente d'ajouter les fonctionalités d'un véritable SGBDR C/S et c'est ce que kagemaru veut te faire comprendre.
Mais je n'ai pas besoin de faire un débat là déssus.
euh... une Guinness peut-etre ?La solution se trouve devant toi, un UDF ou une SP, sinon pas de solution à ton problème.
Tout a fait, enfin la je trouve ca extremement plus complexes [et moins efficace] a mettre en oeuvre que MySQL...Sacree compromis quand meme.Chaque éditeur implemente les fonctions à sa manière.
Le monde de la programmation est fait de beaucoups de compromis.
Merci sans rancune ?Bonne chance.
L'ordre MERGE arrive avec la nouvelle version (MS-SQL 2008)
Sinon, ne trouvez-vous pas votre bonheur ici ?
Que feras merge ?
Sinon merci beaucoup pour tout tes documents (ils m'ont deja servi auparavant), mais je n'ai pas trouver mon bonheur sur ton lien :'(
pour être plus performant, charge tout ton fichier dans une table temporaire par bcp ou bulik insert puis effectue tes traitements en mode ensembliste :A l'heure actuelle je suis oblige de parser chaque ligne de mon fichier, de tester si la ligne n'existe pas deja puis je l'insere (si besoin est)
supprime les occurrences de cette table temp qui existent déja dans la table existante puis insere le restant dans la table existante.
Bonne idee, par contre aurait-tu un lien sur les traitements ensembliste, ou pourrait tu me donner les mots clefs utiles ?
Merci
quand je parlais de trt ensembliste, c'est justement éviter de faire du ligne à ligne (seulement avec des select/insert/update/delete).
faudrait voir un peu de code pour pouvoir guider
En fait je m'oriente vers une autre solution, en utilisant uniquement (ou le plus possible) DTS, mais merci pour l'astuce
Par contre j'ai une question ; si je tente l'insertion d'une ligne alors que celle-ci est visiblement un doublons (via des clefs primaires) est ce que la ligne va etre introduite ou j'aurais simplement un message d'erreur ?
Merci encore
message d'erreur : violation de clé en double, insertion en échec. Du moment que tu évites le ligne à ligne, tu auras de bien meilleures perfs.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager