当两个数据库在不同用户下,从一个数据库中的表复制数据到另一个数据库中的表的最佳方法是什么?
我知道可以使用
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
。有什么想法吗?
创建表 db1.table1 并从 db2.table1 中选择所有数据
其中db1为目标数据库,db2为源数据库。
ALTER TABLE db1.table1 ADD PRIMARY KEY (id); ALTER TABLE db1.table1 MODIFY COLUMN id INT AUTO_INCREMENT;
- Weston Gangercreate table db1.table1 like db2.table1
- Yehia如果你可以使用 shell 访问,你可以使用 mysqldump
导出 database1.table1
的内容,并将其传输到 mysql
中的 database2
。问题在于,table1
仍然是 table1
。
mysqldump --user=user1 --password=password1 database1 table1 \
| mysql --user=user2 --password=password2 database2
也许你需要使用另一个查询将table1
重命名为table2
。或者你可以使用sed在两个竖杠之间将table1更改为table2。
mysqldump --user=user1 --password=password1 database1 table1 \
| sed -e 's/`table1`/`table2`/' \
| mysql --user=user2 --password=password2 database2
如果table2已经存在,你可以将参数添加到第一个mysqldump中,以防止创建表。
mysqldump --no-create-info --no-create-db --user=user1 --password=password1 database1 table1 \
| sed -e 's/`table1`/`table2`/' \
| mysql --user=user2 --password=password2 database2
~/.my.cnf
文件,以避免在命令本身中透露这些值。请参阅 https://dev.mysql.com/doc/refman/8.0/en/option-files.html。 - Leo Galleguillos如果您正在使用 PHPMyAdmin,那么这可能非常简单。 假设您有以下数据库:
DB1 & DB2
您希望将DB1中的users表复制到DB2。
在PHPMyAdmin中打开DB1,然后进入users表。
在该页面上,点击右上角的"操作"选项卡。 在“操作”下面,找到复制表到(数据库.表):部分。
& 就这样完成了!
我使用 Navicat for MySQL...
它使得所有的数据库操作变得简单易行!
你只需要在 Navicat 中选择这两个数据库,然后使用即可。
INSERT INTO Database2.Table1 SELECT * from Database1.Table1
对我来说它运作良好。
CREATE TABLE dbto.table_name like dbfrom.table_name;
insert into dbto.table_name select * from dbfrom.table_name;
mysql Workbench
迁移和 SQLYog
的数据库复制?从我快速查看的情况来看,它们非常相似,但 mysql workbench 是一个更新的特性。 - wired00如果您的表位于同一台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;
这里有另一种简单的方法:
show create table TB1
命令。INSERT INTO DB2.TB1 SELECT * from DB1.TB1;
我知道这是一个旧问题,只是回答一下,让任何来到这里的人都能得到更好的解决方案。
从5.6.10开始,您可以执行以下操作:
CREATE TABLE new_tbl LIKE orig_tbl;
参考此处文档:https://dev.mysql.com/doc/refman/5.7/en/create-table-like.html
E.g. select * from table1;
create a new table using similar columns as the first one
E.g. create table table2 like table1;
select all from the new table
E.g. select * from table2;
Click on Import and select the CSV file you exported in step 2