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

Popular posts from this blog

Java - Error: no suitable method found for add(int, java.lang.String) -

java - JPA TypedQuery: Parameter value element did not match expected type -

c++ - static template member variable has internal linkage but is not defined -