sql >> Databáze >  >> RDS >> Mysql

Ruby CSV čtení víceřádkových polí

Váš problém není víceřádkový, ale chybně formátovaný soubor CSV.

Nahraďte \" a ukončete mezeru za koncem řádku takto:

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

To dává:

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

Pokud nemáte kontrolu nad programem, který doručuje CSV, musíte soubor otevřít, přečíst si jeho obsah, nahradit jej a poté CSV analyzovat. Používám __ zde ale můžete použít i jiné nekonfliktní znaky.




  1. Jak mohu vybrat více hodnot ve stejném sloupci?

  2. Nejlepší fóra o výkonu SQL Serveru pro nápovědu k nejobtížnějším otázkám

  3. Problémy s MySQL LOAD XML INFILE

  4. Ukládání hexadecimálních hodnot jako binárních v MySQL