Mysql
 sql >> база данни >  >> RDS >> Mysql

Ruby CSV чете многоредови полета

Вашият проблем не е многоредовият, а неправилно оформен CSV.

Заменете \" и край на интервал след ред, завършващ по следния начин:

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

Това дава:

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

Ако нямате контрол върху програмата, която доставя CSV, трябва да отворите файла, да прочетете съдържанието, да извършите замяна и след това да анализирате CSV. Използвам __ тук, но можете да използвате други неконфликтни знаци.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. вътрешно присъединяване изберете (A,B) на A и B срещу където (A,B) в select(A, B) в mysql

  2. Как да съхранявате арабски текст в базата данни на mysql с помощта на python?

  3. Mysql:Настройте формата на DATETIME на „ДД-ММ-ГГГГ ЧЧ:ММ:СС“, когато създавате таблица

  4. PHP MySQL малко изчакване на заявка, трябва да зададете ограничение на 10

  5. Play Framework Anorm &DB не са разрешени