将数据从一个数据库迁移到另一个数据库
P粉509383150
P粉509383150 2023-08-24 09:58:47
[MySQL讨论组]
<p>我需要将数据从一个数据库迁移到另一个数据库,两者都在同一台本地系统上。</p> <p>表和列的名称不同,我不必迁移旧数据库中的所有列,所以 </p> <p><code>Select *</code> 对我无效。</p> <pre class="brush:php;toolbar:false;">INSERT INTO newDatabase.table1(Column1, Column2); SELECT oldDatabase.table1(column1, column2) FROM oldDatabase.table1</pre> <p>但是我得到了一个 <code>#1064 - 语法错误</code></p> <p>我的查询中有什么错误,我该如何修复?</p> <p>提前感谢</p>
P粉509383150
P粉509383150

全部回复(2)
P粉985686557
INSERT INTO db1.table SELECT * FROM db2.table;

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

P粉663883862

您的查询应该是这样的:

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的位置。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号