2013-06-06 6 views
5

मैं अपने डीबी को पूर्व बैकअप से पुनर्स्थापित करने का एक तरीका ढूंढ रहा हूं। हालांकि, बैकअप को सभी मौजूदा रिकॉर्ड्स को ओवरराइट नहीं करना चाहिए बल्कि इसके बजाय वर्तमान डीबी और बैकअप फ़ाइल के बीच केवल अंतर जोड़ना चाहिए। यदि बैकअप में कोई "अस्तित्वहीन" रिकॉर्ड संग्रहीत नहीं किया गया है, तो कुछ भी नहीं होना चाहिए। बैकअप Mysqldump के साथ बनाया गया था। कोई सुराग? अग्रिम धन्यवादmysql आयात केवल गायब

उत्तर

5

डंप फ़ाइल से DROP TABLE और CREATE TABLE विवरण हटाएं। INSERT कथन INSERT IGNORE पर बदलें। फिर बैकअप फ़ाइल लोड करें और इसे किसी भी डुप्लिकेट पंक्तियों को अपडेट नहीं करना चाहिए।

+0

धन्यवाद, कोशिश की लेकिन फिर यह सभी – z3po

+0

पर डीबी को अपडेट करना बंद कर देता है क्या बैकअप के बाद स्कीमा बदल गई है? – Barmar

+0

नहीं, कुछ भी नहीं बदला। ताज़ा किए गए बैकअप के साथ-साथ – z3po

8

यहाँ एक कम मैनुअल जवाब है:

mysqldump -t --insert-ignore --skip-opt -u USER -pPASSWORD -h 127.0.0.1 database > database.sql

कि -t --insert-ignore --skip-opt विकल्पों के साथ निर्यात आदेश का कोई DROP TABLE या CREATE TABLE आदेशों के साथ आप एक एसक्यूएल डंप फ़ाइल दे देंगे और हर INSERT अब एक INSERT IGNORE है।

बोनस:

यह उसी तरह से एक एकल तालिका डंप हो जाएगा:

mysqldump -t --insert-ignore --skip-opt -u USER -pPASSWORD -h 127.0.0.1 database table_name > table_name.sql

मैं आज की जरूरत है और लेकिन यह साझा करने के लिए मदद नहीं कर सकते!

संबंधित मुद्दे