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
这不是我的解决方案,但我发现它很有用.
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 - 数据库备份程序
sha*_*nuo 29
mysqldump -u user1 -ppassword1 databasename TblName | mysql -u user2 -ppassword2 anotherDatabase
Run Code Online (Sandbox Code Playgroud)
这一切都可以在一个命令中完成.
一个班轮与不同的服务器
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是表的主键
CREATE TABLE db_target.cloned_table
SELECT *
FROM db_source.source_table;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81942 次 |
| 最近记录: |