आप कहते हैं कि दोनों ग्राहक आपके एप्लिकेशन का उपयोग कर रहे हैं, इसलिए मुझे लगता है कि यह किसी प्रकार का "सिकुड़-रैप" सॉफ़्टवेयर है जिसका उपयोग केवल इन दोनों की तुलना में अधिक ग्राहकों द्वारा किया जाता है, सही?
यदि हां, तो तालिकाओं में विशेष कॉलम जोड़ने या ऐसा कुछ भी भविष्य में दर्द का कारण बन सकता है, क्योंकि आपको या तो इन दो ग्राहकों के लिए एक विशेष संस्करण बनाए रखना होगा जो अतिरिक्त कॉलम से निपट सकता है। या आपको इन कॉलमों को अपने मुख्य कोडबेस से परिचित कराना होगा, जिसका अर्थ है कि आपके अन्य सभी ग्राहक भी इन्हें प्राप्त करेंगे।
मैं आपकी किसी भी तालिका को बदले बिना या कोई कॉलम जोड़े बिना इसे करने का एक आसान तरीका सोच सकता हूं।
इसे काम करने के लिए, आपको दोनों डेटाबेस में एक साथ मौजूद सबसे बड़ी आईडी का पता लगाना होगा ( कोई फर्क नहीं पड़ता कि वह किस तालिका में या किस डेटाबेस में है) ।
इस तरह दिखने वाली बहुत सी क्वेरी प्राप्त करने के लिए इसे कुछ कॉपी और पेस्ट की आवश्यकता हो सकती है:
select max(id) as maxlocationid from locations
select max(id) as maxpersonid from persons
-- and so on... (one query for each table)
जब आप दोनों डेटाबेस में क्वेरी चलाने के बाद सबसे बड़ी आईडी पाते हैं, तो एक संख्या लें जो उस आईडी से बड़ी हो, और इसे दूसरे डेटाबेस में सभी तालिकाओं में सभी आईडी में जोड़ें।
यह बहुत महत्वपूर्ण है कि संख्या दोनों डेटाबेस में पहले से मौजूद सबसे बड़ी आईडी से बड़ा होना चाहिए!
इसे समझाना थोड़ा मुश्किल है, इसलिए यहां एक उदाहरण दिया गया है:
मान लें कि दोनों डेटाबेस में किसी भी तालिका में सबसे बड़ी आईडी 8000
है .
फिर आप कुछ SQL चलाते हैं जो 10000
. जोड़ता है दूसरे डेटाबेस . में प्रत्येक तालिका में प्रत्येक आईडी के लिए :
update Locations set Id = Id + 10000
update Persons set Id = Id + 10000, LocationId = LocationId + 10000
-- and so on, for each table
क्वेरी अपेक्षाकृत सरल हैं, लेकिन यह सबसे अधिक काम है क्योंकि आपको डेटाबेस में प्रत्येक तालिका के लिए सभी आईडी कॉलम के सही नामों के साथ मैन्युअल रूप से इस तरह की एक क्वेरी बनानी होगी।
दूसरे डेटाबेस पर क्वेरी चलाने के बाद, आपके प्रश्न का उदाहरण डेटा इस तरह दिखेगा:
डेटाबेस 1: (बिल्कुल पहले की तरह)
Locations
:
Id Name Adress etc....
1 Location 1
2 Location 2
Persons
:
Id LocationId Name etc...
1 1 Alex
2 1 Peter
3 2 Lisa
डेटाबेस 2:
Locations
:
Id Name Adress etc....
10001 Location A
10002 Location B
Persons
:
Id LocationId Name etc...
10001 10001 Mark
10002 10002 Ashley
10003 10001 Ben
और बस! अब आप बिना किसी प्राथमिक कुंजी उल्लंघन के डेटा को एक डेटाबेस से दूसरे डेटाबेस में आयात कर सकते हैं।