sql - Delete row if type cast fails -
ठीक है, ये लेआउट है: जब मैं इसे चलाता हूं, मुझे त्रुटि मिलती है त्रुटि: यूयूइड के लिए अमान्य इनपुट सिंटैक्स: जो मैं क्या अपेक्षा करता हूं मेरे डेटा सेट में कुछ खराब यूयूइड्स हैं। मेरा शोध मुझे डॉक्स में ले गया। मुझे नहीं पता है कि इसके बजाय आप यहां हम देख सकते हैं कि तो आप
मेरे पास uuid डेटा का एक गुच्छा है प्रारूप में
varchar मुझे पता है कि
uuid इसका अपना प्रकार है। इस तरह मुझे डेटा मिला है इसलिए यह सत्यापित करने के लिए कि कौन सा
uuid है, मैं
uuid प्रकार
varchar में लेता हूं और उसे उस तालिका में डालें जहां कॉलम है
UUID । यदि डालने में विफल रहता है, तो यह एक
uuid प्रकार नहीं है। मेरा मूल प्रश्न यह है कि खराब
uuid कैसे हटाएं, यदि सम्मिलित विफल हो या, यदि एक सम्मिलन किसी अन्य तालिका में विफल हो जाता है, तो मैं एक तालिका से कैसे हटाऊं?। मेरा पहला डेटा सेट:
ड्रॉप तालिका यदि मौजूद है तो temp1; ड्रॉप अनुक्रम यदि मौजूद है temp1_id_seq; अस्थायी तालिका temp1 (आईडी धारावाहिक, some_value varchar) बनाएँ; INSERT temp1 (some_value) SELECT split_part (name, ':', 2) ब्रांडिंग_सोर्स से जहां '% curric%' की तरह नाम; अस्थायी तालिका temp2 बनाएँ (आईडी सीरियल, अन्य_मानित यूयूआईडी); निर्माण या पुनःप्रकाशित करें function_uuid () varchar AS $$ DECLARE यू रिकॉर्ड; यूआरआई के लिए शुरू करें * से temp1 LOOP EXPUTE 'INSTERT में temp2 मान (' || uu.id || ',' '' uu.some_value || '' ')'; अंत लुप; समाप्त; $$ भाषा 'plpgsql'; Verify_uuid () चुनें;
महत्वपूर्ण हिस्से को नीचे की ओर ले जाना:
यूए इन के लिए BEGIN * Temp1 LOOP से * शुरू करें 'temp2 मानों में शुरू करें' ('uu.id ||', '' 'uu.some_value ||' '') '; वापसी; अपवाद जब ??? फिर temp1 से हटाएं जहां some_value = uu.some_value; समाप्त; अंत लुप; समाप्त;
??? की जगह क्या है। मुझे लगता है कि यह
त्रुटि से संबंधित है: uuid के लिए अमान्य इनपुट सिंटैक्स: , लेकिन मुझे यकीन नहीं है। मैं वास्तव में भी यकीन नहीं कर रहा हूँ कि यह इस बारे में जाने का सही तरीका है?
psql से
VERBOSE मोड का उपयोग करके SQLSTATE कोड, जैसे:
regress = & gt; \ वर्बोज़ी वर्बोज़ रिग्रेस सेट करें = & gt; चुनें 'फ्रेड' :: यूयूआईडी; त्रुटि: 22P02: यूयूइड के लिए अमान्य इनपुट सिंटैक्स: "फ्रेड" लाइन 1: 'फ्रेड' चुनें: यूयूआईडी; ^ LOCATION: string_to_uuid, uuid.c: 129
SQLSTATE है
22P02 । आप सीधे अपवाद खंड में उस का उपयोग कर सकते हैं, लेकिन टेक्स्ट प्रस्तुति को खोजने के लिए आम तौर पर यह अधिक पठनीय है। यहां, हम देखते हैं कि
22P02 है
invalid_text_representation ।
अपवाद लिख सकते हैं जब invalid_text_representation ...
Comments
Post a Comment