PDA

View Full Version : کد من برای انتقال کل رکورد های یک جدول به جدول مشابه



KouroshSharifi
شنبه 01 مهر 1391, 09:20 صبح
سلام من یک اسکریبت نوشتم که کل رکورد های یک جدول رو به جدول مشابه انتقال می ده
اکریبت درست کار می کنه فقط می خوام بدونم راه ساده تری وجود داره برای اینکار یا نه می خوام بدونم به نظر شما من لقمه رو دور سر چرخوندم ؟

<?php
ini_set("display_errors", 1);
$source_host = 'localhost';
$db_source = 'ts';
$table_source = 'tbl6';
$source_db_username = 'root';
$source_db_pass = 'root';

$destination_host = 'localhost';
$db_destination = 'des';
$table_destination = 'tbl2';
$destination_db_username = 'root';
$destination_db_pass = 'root';
$whereStatment = "";


$localConnection = mysql_connect($source_host,$source_db_username,$so urce_db_pass);
mysql_select_db($db_source,$localConnection);

$surceDataArray = array();
$destinationArray = array();
$query = "SELECT * FROM " . $table_source . " " . $whereStatment;
$query_run = mysql_query($query,$localConnection);
echo $query . "<br/>";

while($result = mysql_fetch_assoc($query_run)){
$surceDataArray[] = $result ;
}

foreach ($surceDataArray as $temp) {
$destinationArray[] = $temp;
}
$records_count = count($destinationArray);
$serverConnection = mysql_connect($destination_host,$destination_db_us ername,$destination_db_pass);
mysql_select_db($db_destination,$serverConnection) ;
$inserted_query = "";
$query = "";
$fields_counter = 0;
$val_counter = 0;
for ($i=0; $i < $records_count; $i++) {
$query = "INSERT INTO " . $table_destination . "(";
$valuesArray = array();
foreach($destinationArray[$i] as $key=>$valu){
$fileds_count = count($destinationArray[$i]);
$fields_counter++;
$valuesArray[] = $valu;
$query .= $key;
if($fields_counter < $fileds_count){
$query .= ",";
}
}
$fields_counter = 0;
$query .= ") VALUES(";
foreach($valuesArray as $vale){
$val_counter++;
$query .= "'" . $vale . "'";
if($val_counter < $fileds_count){
$query .= ",";
}
}
$val_counter = 0;
//echo "<br/>";
$query .= ")";
$inserted_query = $query;
if(!mysql_query($query,$serverConnection)){
die(mysql_error());
}
unset($valuesArray);
unset($query);
}
echo $inserted_query;

?>

Unique
شنبه 01 مهر 1391, 10:40 صبح
اگه جداول مشابه هستند این کار بیخودیه و زمان زیادی هم میبره ! با خود sql میشه :


insert into tbl2(value 1 , vahid 2) select value1,value2 from tbl1

فقط چند ثانیه طول میکشه ! اونم اگه چند میلیون رکورد باشه.

KouroshSharifi
شنبه 01 مهر 1391, 10:47 صبح
آخه دیتابیس ها با هم فرق دارن و روی دوتا سرور مختلف هستند