IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Equivalent a REPLACE et ON DUPLICATE KEY de MySQL


Sujet :

MS SQL Server

  1. #1
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244
    Par défaut Equivalent a REPLACE et ON DUPLICATE KEY de MySQL
    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

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut replace.
    replace existe en sql serveur.

    pour verification et complement d'information.

    http://sqlpro.developpez.com/cours/sqlaz/fonctions/

  3. #3
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244
    Par défaut
    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

    REPLACE 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 ».
    En fait je chercher a eviter les doublons dans mes inserts

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut
    desole, anthony, je ne connais pas la réponse à cette question.

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 141
    Points : 176
    Points
    176
    Par défaut
    Eeeeh un update?

  6. #6
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244
    Par défaut
    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

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 141
    Points : 176
    Points
    176
    Par défaut
    Je me demande si cela existe avec SQL Server.

    Si ce n'est pas le cas, va falloir pondre quelques lignes de code

  8. #8
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244
    Par défaut
    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.

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    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 relatif

    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...

  10. #10
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244
    Par défaut
    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.

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    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

  12. #12
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Citation Envoyé par Anthony.Desvernois
    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.
    Vé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. 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.

  13. #13
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244
    Par défaut
    Citation Envoyé par kagemaru
    tes opérations sont faites sur des tables en innodb(avec journal) ou en myisam(pas de journal) ?
    Bonne questions, j'indiquerais cela demain

    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
    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 preneur

    Vé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.
    Tu as raison, j'aurai du preciser que MS-SQL etait a des annees lumieres de MySQL dans ce type d'operation

    La solution se trouve devant toi, un UDF ou une SP, sinon pas de solution à ton problème.
    euh... une Guinness peut-etre ?

    Chaque éditeur implemente les fonctions à sa manière.

    Le monde de la programmation est fait de beaucoups de compromis.
    Tout a fait, enfin la je trouve ca extremement plus complexes [et moins efficace] a mettre en oeuvre que MySQL...Sacree compromis quand meme.

    Bonne chance.
    Merci sans rancune ?

  14. #14
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    L'ordre MERGE arrive avec la nouvelle version (MS-SQL 2008)

    Sinon, ne trouvez-vous pas votre bonheur ici ?

  15. #15
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244
    Par défaut
    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 :'(

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    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)
    pour être plus performant, charge tout ton fichier dans une table temporaire par bcp ou bulik insert puis effectue tes traitements en mode ensembliste :
    supprime les occurrences de cette table temp qui existent déja dans la table existante puis insere le restant dans la table existante.

  17. #17
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244
    Par défaut
    Bonne idee, par contre aurait-tu un lien sur les traitements ensembliste, ou pourrait tu me donner les mots clefs utiles ?
    Merci

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    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

  19. #19
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244
    Par défaut
    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

  20. #20
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Equivalent On duplicate key
    Par arthuro45 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/03/2010, 11h22
  2. on duplicate key avec un select au lieu d'update ?
    Par pony dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/10/2006, 15h05
  3. Erreur Duplicate key name
    Par snipes dans le forum Requêtes
    Réponses: 15
    Dernier message: 13/04/2006, 15h55
  4. [SQL SERVER duplicate key]
    Par snetechen dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/01/2006, 10h20
  5. INSERT ... ON DUPLICATE KEY UPDATE
    Par luffy san dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 17/10/2005, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo