当数据库属于不同的用户时,将数据从一个数据库中的表复制到另一个数据库中的表的最佳方法是什么?

我知道我可以用

INSERT INTO database2.table2 SELECT * from database1.table1

但这里的问题是database1和database2都在不同的MySQL用户下。所以user1只能访问database1, user2只能访问database2。任何想法?


当前回答

这里有另一个简单的方法:

使用DB1;创建表TB1 复制剪贴板中的语法,在DB2中创建TB1 使用DB2; 将语法粘贴到这里以创建表TB1

插入到db2。SELECT * from DB1.TB1;

其他回答

如果您正在使用PHPMyAdmin,它可能非常简单。 假设你有以下数据库:

DB1 & DB2

DB1有一个表用户,您希望将其复制到DB2

在PHPMyAdmin下,打开DB1,然后转到用户表。

在这个页面上,点击右上方的“操作”选项卡。 在操作下,寻找Copy table to (database.table)部分:

&你完蛋了!

首先创建转储。如果table2已经存在,添加——no-create-info——no-create-db标志:

mysqldump -u user1 -p database1 table1 > dump.sql

输入user1密码。然后:

sed -e 's/`table1`/`table2`/' dump.sql
mysql -u user2 -p database2 < dump.sql

输入user2密码。

与helmor的答案相同,但这种方法更安全,因为密码不会以原始文本的形式暴露在控制台(反向搜索,密码嗅探器等)。如果从脚本文件执行,并对其权限设置了适当的限制,则其他方法也可以。

MySql工作台:强烈推荐

这将很容易处理迁移问题。支持在MySql和SqlServer之间迁移指定数据库的指定表。你绝对应该试一试。

这里有另一个简单的方法:

使用DB1;创建表TB1 复制剪贴板中的语法,在DB2中创建TB1 使用DB2; 将语法粘贴到这里以创建表TB1

插入到db2。SELECT * from DB1.TB1;

使用MySql工作台的导出和导入功能。 步骤: 1. 选择所需的值

E.g. select * from table1; 

单击Export按钮并将其保存为CSV。 使用与第一个表相似的列创建一个新表 例如,创建表table2像table1; 从新表中选择所有选项 例如:select * from table2; 单击Import并选择在步骤2中导出的CSV文件