के बाद एक लेनदेन जारी रखना मैं लॉग फ़ाइल से डेटाबेस में रिकॉर्ड्स का एक बड़ा सम्मिलन कर रहा हूं। कभी-कभी (प्रत्येक हज़ार में से 1 पंक्ति) पंक्तियों में से एक प्राथमिक कुंजी का उल्लंघन करती है और लेनदेन विफल होने का कारण बनती है। वर्तमान में, उपयोगकर्ता को मैन्युअल रूप से उस फ़ाइल से गुजरना है जो विफलता का कारण बनता है और पुन: आयात करने का प्रयास करने से पहले अपमानजनक पंक्ति को हटा देता है। यह देखते हुए कि आयात करने के लिए सैकड़ों फाइलें अव्यवहारिक हैं।प्राथमिक कुंजी उल्लंघन त्रुटि
मेरा प्रश्न: मैं रिकॉर्ड कि प्राथमिक कुंजी बाधा का उल्लंघन होगा की प्रविष्टि कैसे छोड़ सकते हैं, प्रत्येक पंक्ति से पहले एक SELECT
बयान करने के लिए अगर यह पहले से मौजूद है को देखने के लिए बिना?
नोट: मैं बहुत समान प्रश्न #1054695 के बारे में पता कर रहा हूँ, लेकिन यह एक एसक्यूएल सर्वर विशिष्ट जवाब प्रतीत होता है और मैं PostgreSQL उपयोग कर रहा हूँ (अजगर/psycopg2 के माध्यम से आयात करना)।
यह काम नहीं करेगा, जब कोई त्रुटि होती है, तो लेनदेन निरस्त हो जाता है और रोलबैक किया जाता है। आपको डेटाबेस के अंदर एक अपवाद हैंडलर चाहिए। प्रश्न विफल: त्रुटि: वर्तमान लेनदेन निरस्त कर दिया गया है, लेनदेन ब्लॉक के अंत तक अनदेखा आदेश –
हां यह होगा। यह SAVEPOINT का पूरा बिंदु है। मैंने एक ठोस उदाहरण देने के लिए अपना जवाब संपादित कर लिया है। –
---- संपादित करें ---- क्षमा करें, मैं गलत था ... मुझ पर शर्म की बात है;) यह ठीक काम करता है, आप सही हैं। –