Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle MySQL INSERT IGNORE के बराबर है?

MERGE स्टेटमेंट देखें। यह वही करना चाहिए जो आप चाहते हैं - यह WHEN NOT MATCHED . है खंड जो ऐसा करेगा।

एक सच्चे VALUES () क्लॉज के लिए Oracle के समर्थन की कमी के साथ क्या करें, निश्चित मानों के साथ एकल रिकॉर्ड के लिए सिंटैक्स बहुत अनाड़ी है, हालांकि:

MERGE INTO your_table yt
USING (
   SELECT 42 as the_pk_value, 
          'some_value' as some_column
   FROM dual
) t on (yt.pk = t.the_pke_value) 
WHEN NOT MATCHED THEN 
   INSERT (pk, the_column)
   VALUES (t.the_pk_value, t.some_column);

एक अलग दृष्टिकोण (यदि आप एक अलग तालिका से थोक लोडिंग कर रहे हैं) ओरेकल की "त्रुटि लॉगिंग" सुविधा का उपयोग करना है। बयान इस तरह दिखेगा:

 INSERT INTO your_table (col1, col2, col3)
 SELECT c1, c2, c3
 FROM staging_table
 LOG ERRORS INTO errlog ('some comment') REJECT LIMIT UNLIMITED;

बाद में सभी पंक्तियाँ जो त्रुटि उत्पन्न करती हैं, तालिका में उपलब्ध हैं errlog . आपको वह errlog बनाना होगा DBMS_ERRLOG.CREATE_ERROR_LOG का उपयोग करके इंसर्ट चलाने से पहले मैन्युअल रूप से टेबल (या जो भी नाम आप चुनें) ।

विवरण के लिए मैनुअल देखें



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. स्तंभ नाम लाने के लिए Oracle क्वेरी

  2. फ्लशिंग सिंगल कर्सर

  3. SQLcl और SQL* Plus (Oracle) में "X Rows Selected" को कैसे निकालें

  4. सही उपयोगकर्ता नाम और पासवर्ड देकर, ORA-01017 प्राप्त करें:अमान्य उपयोगकर्ता नाम/पासवर्ड; लॉगऑन अस्वीकृत

  5. Oracle में किसी दिनांक से लघु माह का नाम लौटाएं