当数据库属于不同的用户时,将数据从一个数据库中的表复制到另一个数据库中的表的最佳方法是什么?
我知道我可以用
INSERT INTO database2.table2 SELECT * from database1.table1
但这里的问题是database1和database2都在不同的MySQL用户下。所以user1只能访问database1, user2只能访问database2。任何想法?
当数据库属于不同的用户时,将数据从一个数据库中的表复制到另一个数据库中的表的最佳方法是什么?
我知道我可以用
INSERT INTO database2.table2 SELECT * from database1.table1
但这里的问题是database1和database2都在不同的MySQL用户下。所以user1只能访问database1, user2只能访问database2。任何想法?
当前回答
这对我很有效
CREATE TABLE dbto.table_name like dbfrom.table_name;
insert into dbto.table_name select * from dbfrom.table_name;
其他回答
我知道这是一个老问题,只是回答,以便任何人降落在这里得到更好的方法。
从5.6.10开始你就可以做到
CREATE TABLE new_tbl LIKE orig_tbl;
参考文档:https://dev.mysql.com/doc/refman/5.7/en/create-table-like.html
使用MySQL Workbench,您可以使用数据导出将表转储到本地SQL文件(仅数据,仅结构或结构和数据),然后使用数据导入将其加载到另一个DB中。
您可以同时打开多个连接(不同的主机、数据库、用户)。
获得所需的所有查询的一种简单方法是使用来自information_schema和concat的数据。
SELECT concat('CREATE TABLE new_db.', TABLE_NAME, ' LIKE old_db.', TABLE_NAME, ';') FROM `TABLES` WHERE TABLE_SCHEMA = 'old_db';
然后你会得到一个结果列表,看起来像这样:
CREATE TABLE new_db.articles LIKE old_db.articles;
CREATE TABLE new_db.categories LIKE old_db.categories;
CREATE TABLE new_db.users LIKE old_db.users;
...
然后就可以运行这些查询了。
但是它不能与MySQL视图一起工作。你可以通过在初始查询中附加AND TABLE_TYPE = 'BASE TABLE'来避免它们:
这是你需要定期做的事情,还是只做一次?
你可以做一个导出(例如使用phpMyAdmin或类似),将脚本出你的表和它的内容到一个文本文件,然后你可以重新导入到另一个数据库。
如果您正在使用PHPMyAdmin,它可能非常简单。 假设你有以下数据库:
DB1 & DB2
DB1有一个表用户,您希望将其复制到DB2
在PHPMyAdmin下,打开DB1,然后转到用户表。
在这个页面上,点击右上方的“操作”选项卡。 在操作下,寻找Copy table to (database.table)部分:
&你完蛋了!