sql >> Database >  >> RDS >> Mysql

Ruby CSV leest velden met meerdere regels

Uw probleem is niet de multiline, maar verkeerd ingedeelde CSV.

Vervang de \" en beëindig de spatie na het einde van een regel als volgt:

require 'csv' 

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

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

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

Dit geeft:

"id","name","address","email","potato"
1,"Bob","---  
- 101 Cottage row 
- Lovely Village 
- ____
","[email protected]","omnomnom"
etc

Als u geen controle heeft over het programma dat de CSV levert, moet u het bestand openen, de inhoud lezen, een vervanging uitvoeren en vervolgens de CSV ontleden. Ik gebruik __ hier, maar je kunt andere niet-conflicterende tekens gebruiken.




  1. MySQL invoegen &joins

  2. Fout 1130 in mysql

  3. Hoe sql met-recursieve instructie geïnterpreteerd?

  4. Python call sql-server opgeslagen procedure met tabelwaardeparameter