Maison  >  Questions et réponses  >  le corps du texte

Migrer les données d'une base de données à une autre

<p>Je dois migrer des données d’une base de données à une autre, toutes deux sur le même système local. </p> <p>Les noms de table et de colonne sont différents et je n'ai pas besoin de migrer toutes les colonnes de l'ancienne base de données, donc </p> <p><code>Sélectionner *</code> ne fonctionne pas pour moi. </p> <pre class="brush:php;toolbar:false;">INSERT INTO newDatabase.table1(Column1, Column2); SELECT oldDatabase.table1(column1, column2) FROM oldDatabase.table1</pre> <p>Mais j'obtiens un <code>#1064 - Erreur de syntaxe</code></p> <p>Quel est le problème avec ma requête et comment puis-je y remédier ? </p> <p>Merci d'avance</p>
P粉509383150P粉509383150443 Il y a quelques jours641

répondre à tous(2)je répondrai

  • P粉985686557

    P粉9856865572023-08-25 00:31:09

    INSERT INTO db1.table SELECT * FROM db2.table;

    Si vous souhaitez copier des données dans la même table dans une base de données différente.

    répondre
    0
  • P粉663883862

    P粉6638838622023-08-25 00:15:21

    Votre requête devrait ressembler à ceci :

    INSERT INTO newDatabase.table1 (Column1, Column2) 
    SELECT column1, column2 FROM oldDatabase.table1;

    Mise à jour

    Étant donné que cette réponse a attiré plus d'attention que prévu, je devrais développer cette réponse. Premièrement, cela n’est peut-être pas évident d’après la réponse elle-même, mais les noms de colonnes n’ont pas besoin d’être les mêmes. Ainsi, ce qui suit fonctionnera également (en supposant que les colonnes existent dans leurs tableaux respectifs) :

    INSERT INTO newDatabase.table1 (Column1, Column2) 
    SELECT SomeOtherColumn, MoreColumns FROM oldDatabase.table1;

    De plus, il n'est même pas nécessaire qu'il s'agisse de véritables colonnes du tableau. Un exemple de transformation de données que j'utilise souvent est :

    INSERT INTO newDatabase.users (name, city, email, username, added_by) 
    SELECT CONCAT(first_name, ' ', last_name), 'Asgard', CONCAT(first_name,'@gmail.com'), CONCAT(first_name,last_name), 'Damir' FROM oldDatabase.old_users;

    Donc, la règle la plus évidente maintenant est peut-être que tant que la requête SELECT renvoie le même nombre de colonnes que celui requis par la requête INSERT, elle peut être utilisée à la place de VALEURS.

    répondre
    0
  • Annulerrépondre