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

我知道我可以用

INSERT INTO database2.table2 SELECT * from database1.table1

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


当前回答

MySql工作台:强烈推荐

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

其他回答

创建表db1。SELECT * FROM db2.table1

哪里db1是目标,db2是源

如果你的表在同一个mysql服务器上,你可以运行下面的命令

CREATE TABLE destination_db.my_table SELECT * FROM source_db.my_table;
ALTER TABLE destination_db.my_table ADD PRIMARY KEY (id); 
ALTER TABLE destination_db.my_table MODIFY COLUMN id INT AUTO_INCREMENT;

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

对于我来说,我需要指定模式为“information_schema”。表”

为例。

SELECT concat('CREATE TABLE new_db.', TABLE_NAME, ' LIKE old_db.', TABLE_NAME, ';') FROM information_schema.TABLES  WHERE TABLE_SCHEMA = 'old_db';

使用MySQL Workbench,您可以使用数据导出将表转储到本地SQL文件(仅数据,仅结构或结构和数据),然后使用数据导入将其加载到另一个DB中。

您可以同时打开多个连接(不同的主机、数据库、用户)。