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

Langage SQL Discussion :

Replace and COPY INTO MonetDB (SQL 2003)


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Replace and COPY INTO MonetDB (SQL 2003)
    Bonjour a tous,
    J'utilise la base MonetDB
    Mon soucis est assez bête, je cherche à faire un replace simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    sql>CREATE TABLE test (id int, PRIMARY KEY (id) );
    operation successful (134.045ms)
    sql>INSERT INTO test (id) VALUES (1);
    1 affected row (58.808ms)
    sql>INSERT INTO test (id) VALUES (1);
    INSERT INTO: PRIMARY KEY constraint 'test.test_id_pkey' violated
    sql>REPLACE INTO test (id) VALUES (1);
    syntax error, unexpected IDENT in: "replace"
    Et, à termes de pouvoir appliquer le replace au "COPY INTO table_name FROM '/csv' "
    Je sais que MonetDB respecte la norme SQL 2003.

    N'ayant rien trouvé au file de mes recherches je me tourne vers vous.
    Cordialement,
    Punkoleo

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 240
    Points : 12 872
    Points
    12 872
    Par défaut
    Bonjour,
    En sql normalisé il faut utiliser update duplicates:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO test (id) VALUES (1) update duplicates

    Tatayo.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour cette réponse rapide, néanmoins je me retrouve avec l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sql>INSERT INTO test (id) VALUES (1) UPDATE duplicates;
    syntax error, unexpected UPDATE, expecting SCOLON in: "insert into test (id) values (1) update"
    Je vais continuer de fouiller de ce coté là (déjà comprendre ce qu'est un SCOLON)
    Merci

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 240
    Points : 12 872
    Points
    12 872
    Par défaut
    Il faut peut-être utiliser la même syntaxe que MySQL:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    insert into test (id,col1) values(1,2) on duplicate key update col1 = 2

    Tatayo.

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Citation Envoyé par punkoleo Voir le message
    Je vais continuer de fouiller de ce coté là (déjà comprendre ce qu'est un SCOLON)
    Le semicolon - c'est à dire le point-virgule dans la langue de Shakespeare - me paraît être un excellent candidat.

    Pour la requête, essayez plutôt la commande UPDATE.

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Alors, suite a plusieurs manipulations, je n'ai pas tellement avancé...

    Je ne vois vraiment pas du coté de INSERT ... UPDATE


    Le mieux que j'ai réussi a faire (et qui ne fonctionne pas ) est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sql>UPDATE test SET id=1,col1=2 WHERE EXISTS(SELECT * from test where id=1);
    1 affected row (84.034ms)
    sql>INSERT INTO test (id,col1) VALUES (1,2) WHERE NOT EXISTS(SELECT * from test where id=1);
    syntax error, unexpected WHERE, expecting SCOLON in: "insert into test (id,col1) values (1,2) where"
    Et même si la syntaxe est surement mauvaise, pas non plus de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    sql>MERGE INTO
    more>    test
    more>USING (SELECT 1 as id,
    more>2 as col1)
    more>AS SH
    more>ON (test.id = SH.id)
    more>WHEN MATCHED THEN UPDATE
    more>SET col1 = 2
    more>WHEN NOT MATCHED THEN INSERT
    more>(id, col1)
    more>VALUES (1,2);
     
    syntax error, unexpected MERGE in: "merge"
    Merge est pourtant apparu avec SQL 2003 d'apres SQL:2003 Has Been Published


    Bon je continue de chercher. Merci pour vos pistes.

    Punkoleo

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Oui, mais vous avez pris beaucoup de risque en annonce que MonetDB supporte SQL:2003.

    Sur le site officiel :
    SQL reference manual
    We assume that the user has acquired basic knowledge of SQL elsewhere. The SQL reference manual contains a synopsis of the SQL 2003 language features being supported by MonetDB.
    Traduit : MonetDB supporte des fonctionnalités de SQL2003.
    Et probablement pas toute - aucun SGBD ne supporte complètement la norme.

    Au passage, l'update s'écrit ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE test
       SET col1 = 2
     WHERE id   = 1;

Discussions similaires

  1. Utilisation de REPLACE() dans un programme PL/SQL
    Par Djene dans le forum PL/SQL
    Réponses: 8
    Dernier message: 10/12/2009, 11h30
  2. Replacing en copy
    Par faty_123 dans le forum Cobol
    Réponses: 5
    Dernier message: 04/01/2008, 17h35
  3. Syntaxe d'une variable boolean dans INSERT INTO en SQL
    Par frevale dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 13/05/2006, 19h26
  4. copie de bases sql server7 vers sql server 2000
    Par gdebre dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 01/09/2005, 17h38
  5. copie de requete SQL en gardant la police et la couleur cles
    Par chtiss dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/08/2005, 15h35

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