如何从一张表中导出数据并插入到另一张表中

3

我有两个数据库。我想要从第一个数据库的一个表中导出数据,并将其插入到第二个数据库中另一个名称的表中。
因此,我有DB1,其中包含tbl1和tabl2表,以及DB2,其中包含tbl3和tbl4表。我知道tab1和tab3具有相同的结构。如何使用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个回答

6

由于不同的表名,这种方法行不通

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

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"

抱歉挖掘这篇旧帖子,请问您能告诉我哪种方法更好——就性能而言,是“insert into tbl3”还是将其转储并在新表中进行恢复,考虑到我的表有1亿条记录。 - Saurabh
做一个转储,然后重新插入会更好。或者设置复制。 - ajreal

3

我正在使用Linux命令行

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

这将把整个数据库从本地主机转移到远程主机。

当我运行这个命令(mysqldump --user=root --password=password DB1 tbl1 | mysql --user=root --password=password -C DB2 tbl3)时,它会显示:"写入时出现错误22"。 - Alexander
你确定该用户名/密码组合在两侧都具有足够的权限来执行此操作吗? - uncovery
对我有用。@Alexandor没有为mysql定义远程主机名。 - Māris Kiseļovs

1
如果您想复制表格的内容,可以执行以下操作:
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中出现语法错误,因此这种方法适用于我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接