mysql备份并还原到具有不同列名的表

时间:2011-08-05 14:40:02

标签: mysql restore

我有一张桌子 - customers_old。我想复制这个表中的所有数据,所以我将使用mysqldump。

我需要将数据恢复到一个表customers_new中,该表的列名与customers_old表不同。

我该怎么做?

INSERT..SELECT仅用于手动复制每一行?

请建议

由于

4 个答案:

答案 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,但最终会使数据加倍(新重命名的表/字段+旧的原始表/字段)。