mysql备份和恢复到具有不同列名的表
我有一张表 -customers_old 。我想复制这个表中的所有数据,所以我将使用mysqldump。
我需要将数据恢复到客户新表中,该表的列名与客户旧表不同。
我该怎么做?
INSERT..SELECT 仅用于手动复制每一行?
请指教
谢谢
I have a table - customers_old . I want to copy all the data from this table, so I will use mysqldump.
I need to restore data into a table , customers_new, which has column names different from customers_old table.
How do I do this?
INSERT..SELECT is only for manually copying each row?
Kindly advise
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以通过简单的 ctas(创建表 AS)操作来完成此操作:
通过为旧列添加别名,您可以更改新表中的列名称。
请参阅: http://dev.mysql.com/doc /refman/5.5/en/create-table-select.html
You can do it with a simple ctas (Create Table AS) operation:
By aliasing your old columns you can change the column names in the new table.
see: http://dev.mysql.com/doc/refman/5.5/en/create-table-select.html
您可以编辑 sql 转储文件中的列和表名称,或者导入新表,然后从旧表执行 INSERT SELECT。
You could either edit the column and tables names in your sql dump file, or import the new table then do a INSERT SELECT from the old table.
您不能直接执行此操作,除非您手动修改转储文件以更改其中的列名称。一种选择是将转储加载到临时数据库/表中,然后执行一些 ALTER TABLE 查询以将列重命名为您想要的任何名称。或者您可以执行 INSERT/SELECT,但最终会得到双倍的数据(新重命名的表/字段 + 旧的原始表/字段)。
You can't do this directly, unless you manually hack up the dump file to change the column names in there. One option would be to load the dump into a temporary database/table and then do some ALTER TABLE queries to rename the columns to whatever you want. Or you could do the INSERT/SELECT, but the you'd end up with double the data (new renamed table/fields + old original table/fields).
扩展 PMV 的答案:
To expand on PMV's answer: