sql >> Database teknologi >  >> RDS >> Mysql

Ruby CSV læse felter med flere linjer

Dit problem er ikke multiline, men forkert udformet CSV.

Erstat \" og slutmellemrum efter en linjeslutning som denne:

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

Dette giver:

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

Hvis du ikke har kontrol over programmet, der leverer CSV'en, skal du åbne filen, læse indholdet, lave en erstatning og derefter parse CSV'en. Jeg bruger __ her, men du kan bruge andre ikke-modstridende tegn.




  1. MariaDb SQL Injection

  2. Sådan opretter du en ny MySQL-database med go-sql-driver

  3. Laravel:Sådan får du tilpasset sorteret veltalende samling ved hjælp af whereIn-metoden

  4. Brug Single Row Query med MySQL og PHP