我有一张桌子 - customers_old。我想复制这个表中的所有数据,所以我将使用mysqldump。
我需要将数据恢复到一个表customers_new中,该表的列名与customers_old表不同。
我该怎么做?
INSERT..SELECT仅用于手动复制每一行?
请建议
由于
答案 0 :(得分:2)
扩展PMV的答案:
INSERT INTO newtable (column1_new, column2_new, ...)
SELECT column1_old, column2_old FROM oldtable
答案 1 :(得分:1)
您可以使用简单的ctas(创建表AS)操作来执行此操作:
CREATE TABLE customers_new AS SELECT col1 AS new_col1, col2 AS new_col2 FROM customers_old
通过别名旧列,您可以更改新表中的列名称。
请参阅:http://dev.mysql.com/doc/refman/5.5/en/create-table-select.html
答案 2 :(得分:0)
您可以编辑sql转储文件中的列名和表名,也可以导入新表,然后从旧表中执行INSERT SELECT。
答案 3 :(得分:0)
除非您手动修改转储文件以更改其中的列名,否则不能直接执行此操作。一种选择是将转储加载到临时数据库/表中,然后执行一些ALTER TABLE查询以将列重命名为您想要的任何内容。或者您可以执行INSERT / SELECT,但最终会使数据加倍(新重命名的表/字段+旧的原始表/字段)。