如何将表从一个mysql数据库复制到另一个mysql数据库

Erg*_*gec 26 php mysql sql linux shell

我需要将一个表从一个数据库复制到另一个数据库.这将是一个cronjob.哪一个是最好的方法呢?PHP脚本或Shell脚本.PHP的问题,两个数据库都有不同的用户名和密码,所以我不能这样做.

CREATE TABLE db1.table1 SELECT * FROM db2.table1
Run Code Online (Sandbox Code Playgroud)

我应该只是连接第一个DB获取所有记录并使用WHILE循环将所有记录插入到新数据库中还是有更好的方法?

我更喜欢使用shell脚本来代替PHP脚本.

谢谢

小智 40

如果需要在同一服务器上复制表,可以使用以下代码:

USE db2;

CREATE TABLE table2 LIKE db1.table1;

INSERT INTO table2  
    SELECT * FROM db1.table1;
Run Code Online (Sandbox Code Playgroud)

它是从这里复制+粘贴的: codingforums.com

这不是我的解决方案,但我发现它很有用.

  • 这应该是公认的答案。比mysqldump命令行容易得多。 (2认同)

Pek*_*ica 32

我把它丢弃了.比基于PHP的任何东西都复杂得多.

mysqldump -u user1 -ppassword1 databasename > dump.sql
mysql -u user2 -ppassword2 databasename < dump.sql
Run Code Online (Sandbox Code Playgroud)

MySQL参考:4.5.4.mysqldump - 数据库备份程序

  • 你甚至可以通过它来管道:`mysqldump --user = root --password = remote_password the_database_name | mysql --user = root --password = local_password the_database_name`; 通常这可以通过SSH端口转发从服务器到服务器完成:`ssh -f -N -L 3307:localhost:3306 nmmn`(nmmn是我的SSH快捷方式之一,改为使用服务器名+端口) ; @Ergec用于多个表使用参数`--tables table1 table2` (8认同)
  • 由于我只想传输一个表,我想用一点mod这将工作mysqldump -u user1 -ppassword1 --add-drop-table databasename tablename> dump.sql谢谢 (5认同)

sha*_*nuo 29

mysqldump -u user1 -ppassword1 databasename TblName | mysql -u user2 -ppassword2 anotherDatabase
Run Code Online (Sandbox Code Playgroud)

这一切都可以在一个命令中完成.


Jue*_*gen 7

一个班轮与不同的服务器

mysqldump -h host1 -u user1 -ppassword1 databasename TblName | mysql -h host2 -u user2 -ppassword2 anotherDatabase
Run Code Online (Sandbox Code Playgroud)


小智 6

$L1 = mysql_connect('localhost', 'user1', 'pass1');
$DB1 = mysql_select_db('database1', $L1);   

$L2 = mysql_connect('localhost', 'user2', 'pass2');
$DB2 = mysql_select_db('database2', $L2);   

$re=mysql_query("SELECT * FROM table1",$L1);
while($i=mysql_fetch_assoc($re))
{
    $u=array();
    foreach($i as $k=>$v) if($k!=$keyfield) $u[]="$k='$v'";
    mysql_query("INSERT INTO table2 (".implode(',',array_keys($i)).") VALUES ('".implode("','",$i)."') ON DUPLICATE KEY UPDATE ".implode(',',$u),$L2) or die(mysql_error());
}
Run Code Online (Sandbox Code Playgroud)

user1,pass1,database1,table1引用初始表user2,pass2,database2,table2引用复制表$ keyfield是表的主键


gau*_*kum 5

Phpmyadmin具有内置功能,可以将表从一个数据库复制到另一个数据库.否则你可以使用Pekka或导出表然后导入表.


Fur*_*ury 5

CREATE TABLE db_target.cloned_table 
SELECT * 
FROM db_source.source_table;
Run Code Online (Sandbox Code Playgroud)