当数据库属于不同的用户时,将数据从一个数据库中的表复制到另一个数据库中的表的最佳方法是什么?
我知道我可以用
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 tablename (columnname datatype (size), columnname datatype (size));
2.INSERT INTO db2。SELECT columnname1,columnname2 FROM db1.tablename
其他回答
使用MySQL Workbench,您可以使用数据导出将表转储到本地SQL文件(仅数据,仅结构或结构和数据),然后使用数据导入将其加载到另一个DB中。
您可以同时打开多个连接(不同的主机、数据库、用户)。
这是你需要定期做的事情,还是只做一次?
你可以做一个导出(例如使用phpMyAdmin或类似),将脚本出你的表和它的内容到一个文本文件,然后你可以重新导入到另一个数据库。
如果你的表在同一个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;
尝试mysqldbcopy(文档)
或者可以在目标主机上创建“联邦表”。联邦表允许您查看来自不同数据库服务器的表,就像它是本地表一样。(文档)
创建联邦表之后,可以使用通常的insert从SOURCE将数据复制到TARGET select *中
对于我来说,我需要指定模式为“information_schema”。表”
为例。
SELECT concat('CREATE TABLE new_db.', TABLE_NAME, ' LIKE old_db.', TABLE_NAME, ';') FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'old_db';