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

किसी अन्य तालिका में डुप्लिकेट पंक्तियों को सम्मिलित करने के लिए ट्रिगर डालने से पहले

जहां तक ​​​​आप ट्रिगर का संबंध रखते हैं, वहां कई समस्याएं हैं:

  1. आपके पास ; बयान डालने के बाद
  2. IF स्टेटमेंट के अंत में END IF होना चाहिए और एक अर्धविराम, न कि केवल END
  3. आपको DELIMITER के साथ एक सीमांकक बदलना होगा आदेश
  4. EXISTS() का उपयोग करें इसके बजाय COUNT()

कहा जा रहा है कि आपका ट्रिगर ऐसा दिखाई दे सकता है

DELIMITER $$
CREATE TRIGGER tblspmaster_noduplicate
BEFORE INSERT ON tblspmaster
FOR EACH ROW
BEGIN
  IF (EXISTS(SELECT * FROM tblspmaster WHERE sp = NEW.sp)) THEN
    INSERT INTO tblspduplicate (sp,FileImported,AMZFileName)   
    VALUES (NEW.sp, NEW.FileImported, NEW.AMZFileName);
  END IF;
END$$
DELIMITER ;

यह रहा SQLFiddle डेमो

IGNORE का प्रयोग करें आपके LOAD DATA INFILE . में क्लॉज बयान। MySql त्रुटियों (अद्वितीय बाधाओं का उल्लंघन) को प्रभावी ढंग से डुप्लिकेट को हटाने वाली चेतावनियों के रूप में मानेगा।

LOAD DATA LOCAL INFILE 'E://31october//SP//sp_files_sample1//400k sp00 6-19 E.csv' 
IGNORE  
INTO TABLE tblspmaster 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' 
LINES TERMINATED BY '\n' 
-- IGNORE 1 LINES

नोट: डुप्लिकेट पंक्तियों के लिए FYI विफल सम्मिलन auto_increment SCN के मानों में अंतराल छोड़ देगा स्तंभ।

आप एक अन्य दृष्टिकोण पर विचार कर सकते हैं जो प्रदर्शन के लिहाज से अधिक बेहतर हो सकता है:

  1. बिना किसी बाधा और बिना किसी इंडेक्स के अस्थायी स्टेजिंग टेबल बनाएं
  2. LOAD DATA INFILE का उपयोग करें स्टेजिंग टेबल को भरने के लिए
  3. tblspmaster होने और स्टेजिंग टेबल और INSERT ... SELECT . का उपयोग करके सिंटैक्स tblspduplicate . में सभी डुप्लीकेट डालें एक बार में
  4. स्टेजिंग टेबल से केवल गैर-मौजूद पंक्तियों को tblspmaster में डालें फिर से एक बार में
  5. TRUNCATE या DROP मंचन तालिका



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

  2. प्रश्न विफल होने पर क्या रोलबैक लिखना आवश्यक है?

  3. पहले अक्षर से समूह, वर्णानुक्रम में, सबसे अच्छा तरीका?

  4. पीडीओ प्रारंभ करते समय - क्या मुझे यह करना चाहिए:वर्णसेट =यूटीएफ 8 या वर्णसेट =यूटीएफ 8 एमबी 4?

  5. विभिन्न डीबी में विदेशी कुंजी के साथ django मॉडल का उपयोग कैसे करें?