Heim  >  Fragen und Antworten  >  Hauptteil

Daten von einer Datenbank in eine andere migrieren

<p>Ich muss Daten von einer Datenbank in eine andere migrieren, beide auf demselben lokalen System. </p> <p>Die Tabellen- und Spaltennamen sind unterschiedlich und ich muss nicht alle Spalten aus der alten Datenbank migrieren, also </p> <p><code>Select *</code> funktioniert bei mir nicht. </p> <pre class="brush:php;toolbar:false;">INSERT INTO newDatabase.table1(Column1, Column2); SELECT oldDatabase.table1(column1, columns2) FROM oldDatabase.table1</pre> <p>Aber ich erhalte einen <code>#1064 – Syntaxfehler</code></p> <p>Was stimmt mit meiner Anfrage nicht und wie kann ich das Problem beheben? </p> <p>Vielen Dank im Voraus</p>
P粉509383150P粉509383150422 Tage vor622

Antworte allen(2)Ich werde antworten

  • P粉985686557

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

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

    如果您想将数据复制到不同数据库的相同表中。

    Antwort
    0
  • P粉663883862

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

    您的查询应该是这样的:

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

    更新

    由于这个答案引起了比我预期的更多的关注,我应该对这个答案进行扩展。首先,从答案本身可能不明显,但是列名不需要相同。所以,以下也可以工作(假设列在各自的表中存在):

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

    此外,它们甚至不需要是表中的真实列。我经常使用的一个转换数据的示例之一是:

    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;

    所以,现在可能更明显的规则是,只要SELECT查询返回与INSERT查询所需的列数相同的列,它就可以用于VALUES的位置。

    Antwort
    0
  • StornierenAntwort