J'espère que cela aidera quelqu'un ... Voici un petit script PHP que j'ai écrit au cas où vous auriez besoin de copier certaines colonnes mais pas d'autres, et/ou les colonnes ne sont pas dans le même ordre sur les deux tables. Tant que les colonnes portent le même nom, cela fonctionnera. Donc si la table A a [userid, handle, quelquechose] et que tableB a [userID, handle, timestamp], alors vous "SELECT userID, handle, NOW() comme timestamp FROM tableA", puis obtenez le résultat de cela, et passe le résultat en tant que premier paramètre à cette fonction ($ z). $ toTable est un nom de chaîne pour la table à laquelle vous copiez, et $ link_identifier est la base de données à laquelle vous copiez. Ceci est relativement rapide pour les petits ensembles de données. Pas suggéré que vous essayez de déplacer plus de quelques milliers de lignes à la fois de cette façon dans un cadre de production. Je l'utilise principalement pour sauvegarder les données collectées au cours d'une session lorsqu'un utilisateur se déconnecte, puis efface immédiatement les données de la base de données dynamique pour le maintenir à jour.
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);
}
Vous pourriez jeter un coup d'oeil à ceci. Cela a fonctionné pour moi dans mysql. http://stackoverflow.com/questions/57168/how-to-copy-a-row-from-one-sql-server-table-to-another – Shreyo