如何从一个表转储数据并插入另一个表

时间:2011-08-16 10:12:49

标签: mysql mysqldump dump

我有两个数据库。我想从第一个数据库中的一个表转储数据,然后在第二个数据库中插入另一个具有另一个名称的表 所以我的DB1有表tbl1和tabl2,DB2有表tbl3和tbl4。我知道tabl1和tabl3具有相同的结构。如何使用mysqldump命令将数据从一个复制到另一个? 我试过这样做,但这不行。

mysqldump --user root --password=password --no-create-info DB1 tbl1 > c:/dump.sql
mysql --user root --password=password DB2 tbl3 < c:/dump.sql

3 个答案:

答案 0 :(得分:5)

由于表名不同,这不起作用

如果两个数据库都使用相同的守护程序位于同一服务器中,则可以直接

insert into DB2.tbl3 select * from DB1.tbl1;

如果DB2中不存在tbl1,则 伪代码:

# import as tbl1 from DB1 into tbl1 in DB2
mysqldump DB1 tbl1 | mysql DB2

# then rename tbl1 in DB2 to tbl3
mysql DB2 -N <<< "rename table tbl1 to tbl3"

答案 1 :(得分:2)

我在linux shell命令行中使用

mysqldump --user=username --password=xxxx dbname | mysql --host=remotehost.com --user=username --password=xxxx -C dname 

将其从本地主机传输到远程主机,即整个数据库。

答案 2 :(得分:0)

如果您还希望复制表的内容,则可以执行以下操作:

CREATE TABLE `new_table_name` LIKE `old_table_name`;
INSERT INTO `new_table_name` SELECT * FROM `old_table_name`;

如果必须将表从一个数据库复制到另一个数据库,请使用以下

 CREATE TABLE `db1.new_table_name` LIKE `db2.old_table_name`;
 INSERT INTO `db1.new_table_name` SELECT * FROM `db2.old_table_name`;

它对我有用,因为转储单个表并且导入时使用MariaDB引发语法错误