MySQL从一个数据库插入另一个数据库

时间:2014-04-07 12:15:43

标签: mysql sql database

我需要将数据从一个数据库迁移到另一个数据库,两者都在同一个本地系统上。

表和列有不同的名称,我不能从旧数据库迁移所有列,所以

Select *对我不起作用。

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

但我得到的只是#1064 - Syntax Error

我的查询中有什么错误,我该如何解决?

提前致谢

4 个答案:

答案 0 :(得分:70)

您的查询应该是这样的:

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。

答案 1 :(得分:4)

你说"表和列有不同的名称",但你仍然使用相同的名字。试试这个:

INSERT INTO newDatabase.newtable1 (newColumn1, newColumn2) 
SELECT oldcolumn1, oldcolumn2 FROM oldDatabase.oldtable1;

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

CREATE TABLE db2.table LIKE db1.table;
INSERT INTO db2.table 
SELECT column_name FROM db1.table