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

रूबी सीएसवी मल्टीलाइन फ़ील्ड पढ़ें

आपकी समस्या मल्टीलाइन नहीं बल्कि विकृत सीएसवी है।

\" को बदलें और एक पंक्ति के इस तरह समाप्त होने के बाद स्थान समाप्त करें:

require 'csv' 

ml = %q{"id","name","address","email","potato" 
1,"Bob","---  
- 101 Cottage row 
- Lovely Village 
- \"\" 
","example@sqldat.com","omnomnom" 
2,"Charlie","---  
- 102 Flame Street 
- \"\" 
- \"\" 
","example@sqldat.com","andcheese" 
4,"Doug","---  
- 103 Dark Cave 
- Next to some geo dude 
- So many bats 
","example@sqldat.com","usemeltattack"}

ml.gsub!(/\" \n/,"\"\n").gsub!(/\\\"/,"__")

CSV.parse(ml, {:headers=>true}) do |row|
  puts row
end

यह देता है:

"id","name","address","email","potato"
1,"Bob","---  
- 101 Cottage row 
- Lovely Village 
- ____
","example@sqldat.com","omnomnom"
etc

यदि आपके पास सीएसवी वितरित करने वाले प्रोग्राम पर कोई नियंत्रण नहीं है, तो आपको फ़ाइल खोलनी होगी, सामग्री पढ़नी होगी, एक प्रतिस्थापन करना होगा और फिर सीएसवी को पार्स करना होगा। मैं __ . का उपयोग करता हूं यहां लेकिन आप अन्य गैर-विरोधी पात्रों का उपयोग कर सकते हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीडीओ अपवादों को कैसे संभालें

  2. MySQL #1093 - आप खंड से अद्यतन के लिए लक्ष्य तालिका 'सस्ता' निर्दिष्ट नहीं कर सकते हैं

  3. MYSQL 5.7 में नेटिव JSON सपोर्ट:MYSQL में JSON डेटा टाइप के फायदे और नुकसान क्या हैं?

  4. एक MySQL डेटाबेस में एक PHP सरणी की सामग्री संग्रहीत करना

  5. MySQL:BEGIN&COMMIT के साथ एक ही क्वेरी में एकाधिक तालिकाओं में सम्मिलित करें