一尘不染

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

mysql

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

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

Select * 对我不起作用。

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

但我只有一个 #1064 - Syntax Error

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

提前致谢


阅读 465

收藏
2020-05-17

共1个答案

一尘不染

您的查询应如下所示:

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。

2020-05-17