Надеюсь, это кому-нибудь поможет ... Вот небольшой PHP-скрипт, который я написал на тот случай, если вам нужно скопировать некоторые столбцы, но не другие, и / или столбцы не в одинаковом порядке в обеих таблицах. Пока столбцы названы одинаково, это будет работать. Таким образом, если таблица A имеет [userid, handle, что-то], а tableB имеет [userID, handle, timestamp], тогда вы «ВЫБЕРИТЕ userID, handle, NOW () в качестве метки времени FROM tableA», затем получите результат этого и передать результат в качестве первого параметра этой функции ($ z). $ toTable - это строковое имя таблицы, в которую вы копируете, а $ link_identifier - это база данных, в которую вы копируете. Это относительно быстро для небольших наборов данных. Не рекомендуется пытаться перемещать таким образом более нескольких тысяч строк одновременно в производственных условиях. Я использую это в первую очередь для резервного копирования данных, собранных во время сеанса, когда пользователь выходит из системы, а затем сразу же очищаю данные из действующей БД, чтобы сохранить их стройность.
function mysql_multirow_copy($z,$toTable,$link_identifier) {
$fields = "";
for ($i=0;$i<mysql_num_fields($z);$i++) {
if ($i>0) {
$fields .= ",";
}
$fields .= mysql_field_name($z,$i);
}
$q = "INSERT INTO $toTable ($fields) VALUES";
$c = 0;
mysql_data_seek($z,0); //critical reset in case $z has been parsed beforehand. !
while ($a = mysql_fetch_assoc($z)) {
foreach ($a as $key=>$as) {
$a[$key] = addslashes($as);
next ($a);
}
if ($c>0) {
$q .= ",";
}
$q .= "('".implode(array_values($a),"','")."')";
$c++;
}
$q .= ";";
$z = mysql_query($q,$link_identifier);
return ($q);
}