tutorial - संपूर्ण mysql डेटाबेस ढूंढें और बदलें




mysql tutorial (8)

सावधान रहना, जब उत्तर कमान के साथ जगह!

क्यूं कर?

क्योंकि इस बात की बहुत संभावना है कि आपके डेटाबेस में क्रमबद्ध डेटा (विशेष रूप से wp_options तालिका) है, इसलिए केवल "प्रतिस्थापित" डेटा का उपयोग कर सकता है।

अनुशंसित क्रमांकन का उपयोग करें: https://www.protectpages.com/tools/WordpressMigrator

मैं एक तालिका नहीं बल्कि एक संपूर्ण डेटाबेस के अंदर एक खोज करना और प्रतिस्थापित करना चाहूंगा।

मैं काम करने के लिए नीचे की स्क्रिप्ट को कैसे बदल सकता हूं?

 update [table_name] set [field_name] = replace([field_name],'[string_to_find]','[string_to_replace]');

क्या मैं सिर्फ एक तारांकन का उपयोग करता हूं?

 update * set [field_name] = replace([field_name],'[string_to_find]','[string_to_replace]');

इसका तात्पर्य यह है कि आपका डेटा शुरू होने के लिए आवश्यक नहीं है।

कुछ इस तरह से काम करना चाहिए (एनबी ने आपके द्वारा किसी अन्य भाषाओं का उपयोग करने का उल्लेख नहीं किया है - इसलिए इसे MySQL संग्रहीत प्रक्रिया के रूप में लिखा गया है)

 create procedure replace_all(find varchar(255), 
        replce varchar(255), 
        indb varcv=char(255))
 DECLARE loopdone INTEGER DEFAULT 0;
 DECLARE currtable varchar(100);
 DECLARE alltables CURSOR FOR SELECT t.tablename, c.column_name 
    FROM information_schema.tables t,
    information_schema.columns c
    WHERE t.table_schema=indb
    AND c.table_schema=indb
    AND t.table_name=c.table_name;

 DECLARE CONTINUE HANDLER FOR NOT FOUND
     SET loopdone = 1;

 OPEN alltables;

 tableloop: LOOP
    FETCH alltables INTO currtable, currcol; 
    IF (loopdone>0) THEN LEAVE LOOP;
    END IF;
         SET stmt=CONCAT('UPDATE ', 
                  indb, '.', currtable, ' SET ',
                  currcol, ' = word_sub(\'', find, 
                  '\','\'', replce, '\') WHERE ',
                  currcol, ' LIKE \'%', find, '%\'');
         PREPARE s1 FROM stmt;
         EXECUTE s1;
         DEALLOCATE PREPARE s1;
     END LOOP;
 END //

मैं आपको यह बताने के लिए छोड़ दूंगा कि word_sub फ़ंक्शन को कैसे घोषित किया जाए।


एक टेक्स्ट फ़ाइल के लिए sqldump, sqldump को फिर से आयात करें, खोजें / बदलें।

डेटाबेस को टेक्स्ट फ़ाइल में डंप करें
mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql

आपके द्वारा इसमें परिवर्तन करने के बाद डेटाबेस को पुनर्स्थापित करें।
mysql -u root -p[root_password] [database_name] < dumpfilename.sql


मैं बस यह साझा करना चाहता था कि मैंने यह कैसे पाया / चौराहे डेटाबेस के साथ बात की, क्योंकि मुझे क्रोम के सेशनबुडी डीबी फ़ाइल से लिंक को बदलने की आवश्यकता थी।

  • इसलिए मैंने SQLite डेटाबेस ब्राउज़र 2.0 b1 का उपयोग करके .txt फ़ाइल के रूप में sql डेटाबेस फ़ाइल का निर्यात किया
  • नोटपैड ++ में खोजें / बदलें
  • SQLite डेटाबेस ब्राउज़र 2.0 b1 पर .txt फ़ाइल वापस आयात की गई

यह संभव नहीं है - आपको व्यक्तिगत रूप से प्रत्येक तालिका के लिए एक अद्यतन करना होगा।

चेतावनी: DUBIOUS, लेकिन यह काम करें (पूरी तरह से) हल हल

वैकल्पिक रूप से, आप डेटाबेस को mysqldump माध्यम से डंप कर सकते हैं और परिणामी SQL फ़ाइल पर बस खोज / प्रतिस्थापित कर सकते हैं। (मैं कुछ भी है जो डेटाबेस को छू सकता है, जबकि यह प्रगति पर है, साथ ही --add-drop-table और --extended-सम्मिलित झंडे का उपयोग करने की अनुशंसा करता हूँ), हालांकि, आपको यह सुनिश्चित करने की आवश्यकता होगी। खोज / बदलें पाठ स्वयं डेटा के अलावा किसी भी चीज़ को बदलने नहीं जा रहा था (यानी: वह पाठ जो आप स्वैप करना चाहते थे, SQL सिंटैक्स के हिस्से के रूप में नहीं हो सकता है) और मैं वास्तव में पुन: सम्मिलित करने की कोशिश करूँगा एक खाली परीक्षण डेटाबेस पहले )


वर्ड-प्रेस mysql क्वेरी में पुराने URL को नए URL में अपडेट करें:

UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');

UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');

UPDATE wp_posts SET post_excerpt = replace(post_excerpt, 'http://olddomain.com', 'http://newdomain.com');

UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');

सरल समाधान

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

MySQL सर्च एंड रिप्लेसमेंट टूल

PHP में लिखा गया बहुत उपयोगी वेब-आधारित टूल जो MySQL डेटाबेस में टेक्स्ट स्ट्रिंग्स को खोजना और बदलना आसान बनाता है।





mysql