mysql - phpmyadmin login




MySQL क्वेरी का उपयोग करके संपूर्ण तालिका में टेक्स्ट ढूंढें और बदलें (6)

एसक्यूएल क्वेरीज बदलें (फास्ट)

mysql -e "चयन CONCAT ('अपडेट', table_name, 'set', column_name, '= replace (', column_name, ',' 'www.oldsite.com', '' www.newsite.com ''); ') Info_schema.columns से AS कथन जहां table_name LIKE' wp_% '' -u root -p your_db_name_here> upgrade_script.sql

फ़ाइल की शुरुआत में किसी भी कचरे को हटा दें। मेरे पास थोड़े थे।

नैनो upgrade_script.sql

त्रुटियों को छोड़ने के लिए --force विकल्पों के साथ जेनरेट की गई स्क्रिप्ट चलाएं। (धीमा - बड़े डीबी अगर एक कॉफी पकड़ो)

mysql -u root -p your_db_name_here --force <upgrade_script.sql

आमतौर पर मैं phpmyadmin का उपयोग कर एक MySQL डेटाबेस में पाठ को प्रतिस्थापित करने के लिए मैन्युअल खोज का उपयोग करता हूं। मैं अब इसके बारे में थक गया हूं, मैं phpmyadmin में पूरी तालिका में नए पाठ के साथ टेक्स्ट खोजने और बदलने के लिए क्वेरी कैसे चला सकता हूं?

उदाहरण: कीवर्ड www.domain.com . www.domain.com ढूंढें, www.domain.com साथ प्रतिस्थापित करें।


इसे एक php फ़ाइल में रखें और इसे चलाएं और इसे वह करना चाहिए जो आप करना चाहते हैं।

// Connect to your MySQL database.
$hostname = "localhost";
$username = "db_username";
$password = "db_password";
$database = "db_name";

mysql_connect($hostname, $username, $password);

// The find and replace strings.
$find = "find_this_text";
$replace = "replace_with_this_text";

$loop = mysql_query("
    SELECT
        concat('UPDATE ',table_schema,'.',table_name, ' SET ',column_name, '=replace(',column_name,', ''{$find}'', ''{$replace}'');') AS s
    FROM
        information_schema.columns
    WHERE
        table_schema = '{$database}'")
or die ('Cant loop through dbfields: ' . mysql_error());

while ($query = mysql_fetch_assoc($loop))
{
        mysql_query($query['s']);
}

मेरा मानना ​​है कि "स्वपनेश" का जवाब सबसे अच्छा है! दुर्भाग्य से मैं इसे phpMyAdmin (4.5.0.2) में निष्पादित नहीं कर सका, हालांकि हालांकि अजीब (और कई चीजों की कोशिश की) यह कहता रहा कि एक नया बयान पाया गया था और कोई भी डिलीमीटर नहीं मिला था ...

इस प्रकार मैं निम्नलिखित समाधान के साथ आया था जो उपयोगी हो सकता है यदि आप एक ही मुद्दे को अपनाना चाहते हैं और पीएमए की तुलना में डेटाबेस तक कोई अन्य पहुंच नहीं है ...

UPDATE `wp_posts` AS `toUpdate`,
(SELECT `ID`,REPLACE(`guid`,'http://old.tld','http://new.tld') AS `guid` 
 FROM `wp_posts` WHERE `guid` LIKE 'http://old.tld%') AS `updated`
SET `toUpdate`.`guid`=`updated`.`guid`
WHERE `toUpdate`.`ID`=`updated`.`ID`;

अपेक्षित परिणाम का परीक्षण करने के लिए आप इसका उपयोग करना चाह सकते हैं:

SELECT `toUpdate`.`guid` AS `old guid`,`updated`.`guid` AS `new guid`
FROM `wp_posts` AS `toUpdate`,
(SELECT `ID`,REPLACE(`guid`,'http://old.tld','http://new.tld') AS `guid`
 FROM `wp_posts` WHERE `guid` LIKE 'http://old.tld%') AS `updated`
WHERE `toUpdate`.`ID`=`updated`.`ID`;

मैंने पाया है कि सबसे आसान तरीका डेटाबेस को एक टेक्स्ट फ़ाइल में डंप करना है, प्रतिस्थापन करने के लिए एक sed कमांड चलाएं, और डेटाबेस को MySQL में वापस लोड करें।

सभी आदेश स्मृति से लिनक्स पर बैश हैं।

डेटाबेस को टेक्स्ट फ़ाइल में डंप करें

mysqldump -u user -p databasename > ./db.sql

लक्ष्य स्ट्रिंग को ढूंढने / बदलने के लिए रन कमांड चलाएं

sed -i 's/oldString/newString/g' ./db.sql

डेटाबेस को MySQL में दोबारा लोड करें

mysql -u user -p databasename < ./db.sql

बहुत आसान।


single table अद्यतन के लिए

 UPDATE `table_name`
 SET `field_name` = replace(same_field_name, 'unwanted_text', 'wanted_text')

multiple tables -

यदि आप सभी तालिकाओं से संपादित करना चाहते हैं, तो dump लेने का सबसे अच्छा तरीका है और फिर इसे find/replace और इसे वापस अपलोड करें।


 UPDATE table SET field = replace(field, text_needs_to_be_replaced, text_required);

उदाहरण के लिए, यदि मैं मार्क I द्वारा जॉन की सभी घटनाओं को प्रतिस्थापित करना चाहता हूं तो नीचे उपयोग किया जाएगा,

UPDATE student SET student_name = replace(student_name, 'John', 'Mark');




phpmyadmin