84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
我需要将数据从一个数据库迁移到另一个数据库,两者都在同一台本地系统上。
表和列的名称不同,我不必迁移旧数据库中的所有列,所以
Select * 对我无效。
Select *
INSERT INTO newDatabase.table1(Column1, Column2); SELECT oldDatabase.table1(column1, column2) FROM oldDatabase.table1
但是我得到了一个 #1064 - 语法错误
#1064 - 语法错误
我的查询中有什么错误,我该如何修复?
提前感谢
INSERT INTO db1.table SELECT * FROM db2.table;
如果您想将数据复制到不同数据库的相同表中。
您的查询应该是这样的:
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的位置。
如果您想将数据复制到不同数据库的相同表中。
您的查询应该是这样的:
更新
由于这个答案引起了比我预期的更多的关注,我应该对这个答案进行扩展。首先,从答案本身可能不明显,但是列名不需要相同。所以,以下也可以工作(假设列在各自的表中存在):
此外,它们甚至不需要是表中的真实列。我经常使用的一个转换数据的示例之一是:
所以,现在可能更明显的规则是,只要SELECT查询返回与INSERT查询所需的列数相同的列,它就可以用于VALUES的位置。