जैसा कि अन्य ने पहले ही उल्लेख किया है, आप इसे MySQL में नहीं कर सकते हैं। हालांकि, यह एक बार का ऑपरेशन प्रतीत होता है जो आपको करने की आवश्यकता है इसलिए मैंने आपको काम करने के लिए एक त्वरित और गंदी छोटी PHP स्क्रिप्ट लिखी है। यह मानता है कि आपकी node_revisions तालिका में 'id' नामक प्राथमिक कुंजी कॉलम है। यदि नहीं, तो उचित रूप से संपादित करें। साथ ही, स्क्रिप्ट के शीर्ष पर डेटाबेस होस्ट, उपयोगकर्ता नाम, पासवर्ड और डेटाबेस नाम को अपने कॉन्फ़िगरेशन से मेल खाने के लिए बदलना न भूलें।
<?php
$host = '127.0.0.1';
$username = 'root';
$password = 'password';
$database = 'test';
$conn = mysql_connect($host, $username, $password);
if (!$conn) {
echo "Unable to connect to DB: " . mysql_error();
exit;
}
if (!mysql_select_db($database)) {
echo "Unable to select " . $database . ": " . mysql_error();
exit;
}
$sql = "SELECT * FROM node_revisions";
$result = mysql_query($sql);
if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}
while ($row = mysql_fetch_assoc($result)) {
$id = $row['id'];
$body = $row['body'];
$teaser = $row['teaser'];
$body = preg_replace('/http:\/\/.*?\.pdf/', '/migration-update', $body);
$teaser = preg_replace('/http:\/\/.*?\.pdf/', '/migration-update', $teaser);
$sql = "UPDATE node_revisions set body='" . mysql_real_escape_string($body) . "', teaser='" . mysql_real_escape_string($teaser) . "' where id=" . $id;
mysql_query($sql);
}
mysql_free_result($result);
mysql_close($conn);
?>
यह भी ध्यान दें कि मैंने रेगुलर एक्सप्रेशन पर एक गैर-लालची संशोधक का उपयोग किया है ताकि यदि आपके पास एक बॉडी या टीज़र फ़ील्ड में कई पीडीएफ यूआरएल हैं, तो आप उनके बीच में सब कुछ नहीं खोएंगे।