简体   繁体   English

将数据库复制到服务器上的另一个数据库

[英]Copy database to another database on server

I have a problem. 我有个问题。 I am not very good at this. 我不是很擅长 :) Let's say this is the DB anna_subscribers and i want to copy this database everytime i call this .php file to DB anna_newsletter. :)假设这是DB anna_subscribers,并且每次我将此.php文件调用到DB anna_newsletter时,我都想复制此数据库。 How can i edit this code so that it will not download the file but copy the database to another database on this server? 我如何编辑此代码,以便它不会下载文件,而是将数据库复制到此服务器上的另一个数据库? This is the code of this file that executes the download: 这是执行下载的该文件的代码:

<?
require_once('../../../../../initialize.php');
if(!$session->isLogedIn()) {
exit;
}
ini_set('memory_limit','16M');

$q=$db->get($db->query('SELECT sqlUrl, sqlDatabase, sqlUserName, sqlPassword, ID, importShopID, lastOrderUpdate FROM com_som_shops WHERE ID="3"'));
$dbhandle = new Database(false);
$dbhandle->open_connection(''.$q['sqlUrl'].'', ''.$crypt->decrypt($q['sqlUserName']).'', ''.$crypt->decrypt($q['sqlPassword']).'', ''.$crypt->decrypt($q['sqlDatabase']).'');   
$dbhandle->query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");

$db_un_chQ = $dbhandle->query("SELECT * FROM newsletter_subscriber WHERE subscriber_status='1' AND store_id='3' AND customer_id='0'");
$string="";

while($db_un_chR=$dbhandle->fetch($db_un_chQ)) {
    $string.= $db_un_chR["subscriber_email"].",\n";
}

$dbhandle->close_connection();

header("Content-Type: text/plain; charset=utf-8");
header('Content-Disposition: attachment; filename="exportSubscrtiptionKondomanija_'.date("d.m.Y-H.i").'.txt"');

echo $string;
?>

Do i change ti with something like this: 我是否可以使用以下方式更改ti:

INSERT INTO anna_newsletter..subscribers
SELECT * FROM anna_subscribers..subscribers

DB Structure: anna_subscribers has: 数据库结构:anna_subscribers具有:

`ID``email``date_added`

DB Structure: anna_newsletter has: 数据库结构:anna_newsletter具有:

`id``userID``email``custom_fields``list``unsubscribed``bounced``bounce_soft``complaint``l‌​ast_campaing``last_ares``timestamp``join_date``confirmed``messageID`

只需在查询中指定数据库:

 INSERT INTO DESINATION_DATABASE.subscribers SELECT * FROM SOURCE_DATABASE.subscribers 

You can like this: 您可以这样:

<?php

$dblink1=mysql_connect('$ip1', '$user1', '$pass1'); // connect server 1
mysql_select_db('$database1',$dblink1);  // select database 1

$dblink1=mysql_connect('$ip2', '$user2', '$pass2'); // connect server 2 
mysql_select_db('$database2',$dblink2); // select database 2

$table='tabletest';

$tableinfo = mysql_fetch_array(mysql_query("SHOW CREATE TABLE $table  ",$dblink1)); // get structure from table on server 1

mysql_query(" $tableinfo[1] ",$dblink2); // use found structure to make table on server 2

$result = mysql_query("SELECT * FROM $table  ",$dblink1); // select all content     
while ($row = mysql_fetch_array($result, MYSQL_ASSOC) ) {       
       mysql_query("INSERT INTO $table (".implode(", ",array_keys($row)).") VALUES ('".implode("', '",array_values($row))."')",$dblink2); // insert one row into new table
}

 mysql_close($dblink1);
 mysql_close($dblink2);

 ?>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM