从mysql导出表,导入到具有不同名称的表中

时间:2015-03-17 08:56:40

标签: mysql database mysqldump

我们正在发布基于我们现有产品的新产品,因为我们已经创建了一个具有不同方案的新mysql数据库。

现在我们需要新数据库中我们之前数据库中的一些表,但出于设计目的,新数据库中表的名称不同(但所有字段都相同)。如果名称相同,我可以从先前的数据库导出表并将其导入新表。

现在,如果表的名称不同,我该怎么做?

3 个答案:

答案 0 :(得分:1)

您可以导出和导入这些表,然后使用以下命令重命名表:

RENAME TABLE tbl_name TO new_tbl_name
    [, tbl_name2 TO new_tbl_name2] ...

有关详细信息,请参阅此链接:http://dev.mysql.com/doc/refman/5.0/en/rename-table.html

然后你可以像这样重命名列:

ALTER TABLE xyz CHANGE manufacurerid manufacturerid INT

如此StackOverflow中所述: Error renaming a column in MySQL

答案 1 :(得分:0)

我认为你不能直接这样做但是如果你不想更改转储文件并更改表名,你可以按照以下步骤进行操作

  1. 需要导入新数据库的表,创建一个副本 旧数据库中具有新名称的同一个表,并将数据复制到其中。
  2. 导出每个表,然后将它们导入新数据库。
  3. 这是一个例子

    mysql> select * from table1 ;
    +------+------+
    | t1id | name |
    +------+------+
    |    1 | aa   |
    |    2 | cc   |
    |    3 | dd   |
    |    4 | ee   |
    |    5 | ff   |
    |    6 | bb   |
    |    7 | gg   |
    +------+------+
    7 rows in set (0.00 sec)
    
    mysql> create table table1_copy like table1 ;
    Query OK, 0 rows affected (0.12 sec)
    
    mysql> insert into table1_copy select * from table1 ;
    Query OK, 7 rows affected (0.07 sec)
    Records: 7  Duplicates: 0  Warnings: 0
    
    mysql> select * from table1_copy ;
    +------+------+
    | t1id | name |
    +------+------+
    |    1 | aa   |
    |    2 | cc   |
    |    3 | dd   |
    |    4 | ee   |
    |    5 | ff   |
    |    6 | bb   |
    |    7 | gg   |
    +------+------+
    7 rows in set (0.00 sec)
    

    然后您可以将每个表导出为

    mysqldump -u username -p dbname table1_copy > table1_copy.sql

    将新表导入为 mysql -u username -p < table1_copy.sql

    最后删除在旧数据库上创建的临时表。

    或导出eveything,并重命名表格。

答案 2 :(得分:0)

你可以在mysql中这样做,

 create table new_name_new_table(select * from old_table_name);

将使用新名称将old_table中的所有数据复制到新表。