मुझे एक ही समस्या थी - प्रति दिन एक बार डेटाबेस में आयात की जाने वाली बड़ी फ्लैट फाइलें। अधिकांश डेटा अपरिवर्तनीय है।
तालिका में दो अतिरिक्त कॉलम जोड़ें, start_date और end_date। समाप्ति_तिथि के लिए डिफ़ॉल्ट मान भविष्य में कभी-कभी होना चाहिए।
एक फ़ाइल की दूसरी फ़ाइल से तुलना करने के लिए, उन दोनों को कुंजी स्तंभों के आधार पर क्रमित करें, फिर प्रत्येक फ़ाइल से एक पंक्ति पढ़ें।
- यदि कुंजियाँ समान हैं:शेष स्तंभों की तुलना करके देखें कि क्या डेटा बदल गया है। यदि पंक्ति डेटा समान है, तो पंक्ति पहले से ही डेटाबेस में है और करने के लिए कुछ नहीं है; यदि यह भिन्न है, तो डेटाबेस में मौजूदा पंक्ति को आज की समाप्ति_तिथि के साथ अपडेट करें और आज की प्रारंभिक_तिथि के साथ एक नई पंक्ति डालें। दोनों फाइलों से एक नई पंक्ति पढ़ें।
- यदि पुरानी फ़ाइल की कुंजी छोटी है:पंक्ति हटा दी गई थी। समाप्ति तिथि को आज तक अपडेट करें। पुरानी फ़ाइल से एक नई पंक्ति पढ़ें।
- यदि नई फ़ाइल की कुंजी छोटी है:एक पंक्ति सम्मिलित की गई थी। आज के start_date के साथ डेटाबेस में पंक्ति डालें। नई फ़ाइल से एक नई पंक्ति पढ़ें।
तब तक दोहराएं जब तक आप दोनों फाइलों से सब कुछ पढ़ नहीं लेते।
अब उन पंक्तियों के लिए क्वेरी करने के लिए जो किसी भी तारीख पर मान्य थीं, बस start_date और end_date के बीच जहां क्लॉज test_date के साथ चयन करें।