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

MySQL में LOAD DATA INFILE का उपयोग करके नल या खाली इनपुट को फ़िल्टर करें

मैं फ़ाइल को grep . के साथ फ़िल्टर करके ऐसा करूँगा या awk और फिर इसे MySQL में पाइप करना (/dev/stdin . के माध्यम से) ) कुछ इस तरह:

cat your_file.txt |
  awk '/\t.+/' |
    mysql -u your_username -pyour_password \
      -e "LOAD DATA LOCAL INFILE '/dev/stdin' \
          IGNORE INTO TABLE tablename         \
          COLUMNS TERMINATED BY '\t'          \
          LINES TERMINATED BY '\n'            \
          (col1, col2);" \
      your_database_name

awk . को दिया गया रेगुलर एक्सप्रेशन दूसरी पंक्ति पर बस किसी भी पंक्ति से मेल खाता है जिसमें एक टैब वर्ण होता है जिसके बाद एक या अधिक वर्ण होते हैं। हो सकता है कि आप अपनी ज़रूरतों के अनुसार इसमें बदलाव करना चाहें।

संपादित करें: एक और संभावना मेरे सामने आई। आप SET . का उपयोग कर सकते हैं खाली कॉलम पर कुछ जादुई मान सेट करने के लिए और BEFORE INSERT तालिका पर ट्रिगर करें जो उस मान को देखने पर एक पंक्ति में जमानत देगा। मुझे ट्रिगर्स के साथ अधिक अनुभव नहीं है, लेकिन मुझे लगता है कि कुछ इस तरह काम करना चाहिए:

CREATE TRIGGER skip_magic_rows
  BEFORE INSERT ON tablename
  FOR EACH ROW
  BEGIN
    IF NEW.col2 = 'IDSPISPOPD4815162342' THEN  # Some unlikely magic string
      # Trigger an error, which will cause the INSERT to fail†

      # If you have MySQL < 5.5 this is kludgy -- see Note 1
      DROP TABLE `Skipped row`

      # OR

      # In MySQL >= 5.5 you can send a signal--'45000' is a generic error
      SIGNAL SQLSTATE '45000' SET message_text = 'Skipped row';  # See Note 2

    END IF
  END
;

†: दस्तावेज़ के अनुसार :

फिर...

LOAD DATA LOCAL INFILE 'file' 
  IGNORE INTO TABLE tablename 
  COLUMNS TERMINATED BY '\t' 
  LINES TERMINATED BY '\n'
  (col1, @var2)
  SET col2 = IF(@var2 IN (NULL, ''), 'IDSPISPOPD4815162342', @var2)
;

आशा है कि यह मददगार होगा!

नोट 1: प्रासंगिक ब्लॉग पोस्ट और टिप्पणियां
नोट 2: प्रासंगिक SO थ्रेड




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL त्रुटि कोड:1175 MySQL कार्यक्षेत्र में अद्यतन के दौरान

  2. मारियाडीबी - माईएसक्यूएल - सभी उपलब्ध और समर्थित इंजन प्रदर्शित करने के लिए इंजन दिखाएं

  3. त्रुटि:क्लाइंट सर्वर द्वारा अनुरोधित प्रमाणीकरण प्रोटोकॉल का समर्थन नहीं करता है; MySQL क्लाइंट को अपग्रेड करने पर विचार करें

  4. लगातार विज़िट की संख्या गिनें

  5. Mysql पसंद के साथ सर्वश्रेष्ठ मैच द्वारा चयन करें