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

Requêtes MySQL Discussion :

Copier des tables dans la même base


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 19
    Points : 15
    Points
    15
    Par défaut Copier des tables dans la même base
    Bonjour!

    voilà cet après midi j'ai cherché longtemps comment copier toute une série de tables (qui ont un préfixe) et les coller dans la même table, avec un préfixe différent.

    la solution dégueulasse que j'ai trouvé, avec mon petit niveau sql, c'est ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(-1);
     
    $prefixe_forum = 'forum_phpBB3__';
    $prefixe_test = 'forum_test__';
     
    $lk = mysql_connect($sql_serveur, $sql_login, $sql_password);
     
    mysql_select_db($sql_base, $lk);
     
     
    $q2 = mysql_query("SHOW TABLES LIKE '" . $prefixe_forum . "%'", $lk);
     
    $i=0;
    $t2[0] = ""; // ça peut paraître bizarre, mais si j'initialise pas le tableau, la page ne fait rien, et php n'affiche pas les erreurs sur ce serveur...
    while ( ($r2 = mysql_fetch_row($q2)) !== false) {
        $t2[$i]=$r2[0];
    	$i++;
    }
     
    $q = mysql_query("SHOW TABLES LIKE '" . $prefixe_test . "%'", $lk);
    $i=0;
    while ( ($r = mysql_fetch_row($q)) !== false) {
    	mysql_query("DROP TABLE ". $r[0]);
        mysql_query("CREATE TABLE " . $r[0] . " AS SELECT * FROM " . $t2[$i] . ";") or die("erreur mysql : " . mysql_error());
        echo $r[0] . ' => effectu&eacute;<br>';
    	$i++;
    }
     
    mysql_close();
    c'est assez moche, mais j'en avais marre de chercher des trucs (je testais des update avec AS, mais ça ne marche pas), et ce serveur qui ne veut pour rien au monde m'afficher les erreurs... (page blanche en cas d'erreurs) (prowebserver, pour le site d'as de trefle)


    si vous connaissez une solution propre, je prends!

    merci,
    Gaël

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Bonjour,

    Essaie en passant par la syntaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE TABLE nouvelle_table 
    SELECT * 
    FROM ancienne_table
    Il ne te restera plus qu'à ajouter la définition des clefs primaires et indexes dans la nouvelle table.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    ben en fait cette solution fonctionne (la mienne), le AS est très bien je pense

    le truc c'est que je trouve moche de faire des DROP puis des CREATE, alors qu'on peut peut-être faire UPDATE (ou pas)

    ceci-dit, merci d'avoir répondu!

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Plutôt que détruire la table et la recréer, tu peux aussi la vider complètement (TRUNCATE TABLE la_table) et réinsérer les données (INSERT INTO la_table SELECT...).

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    ouaip j'avais pensé à ça aussi

    et du coup, le UPDATE TABLE latable SELECT [...] ça marcherai aussi?

  6. #6
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Non, ça n'existe pas, comme syntaxe.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    oké très bien, merci beaucoup!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/05/2011, 13h30
  2. Copier un enregistrement dans une même table
    Par slammer dans le forum Langage SQL
    Réponses: 11
    Dernier message: 04/05/2010, 23h17
  3. Réponses: 4
    Dernier message: 18/08/2008, 14h05
  4. insérer des tables dans une base de données oracle
    Par Spacy_green dans le forum Oracle
    Réponses: 3
    Dernier message: 16/03/2007, 11h23
  5. Réponses: 7
    Dernier message: 26/01/2006, 12h19

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