आशा है कि इससे किसी की मदद मिलेगी ... अगर आपको कुछ कॉलम कॉपी करने की आवश्यकता है, लेकिन दूसरों को नहीं, और/या कॉलम दोनों टेबल पर एक ही क्रम में नहीं हैं, तो यहां एक छोटी PHP स्क्रिप्ट है। जब तक कॉलम का नाम समान होता है, यह काम करेगा। तो यदि तालिका ए में [userid, हैंडल, कुछ] है और tableB में [userID, हैंडल, टाइमस्टैम्प] है, तो आप "एआईडीआईडी, हैंडल, अब() को 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);
}
स्रोत
2009-11-10 20:05:25
आप इसे देख सकते थे। यह मेरे लिए mysql में काम किया। http://stackoverflow.com/questions/57168/how-to-copy-a-row-from-one-sql-server-table-to-another – Shreyo