Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Ruby CSV odczytuje pola wielowierszowe

Twoim problemem nie jest wielowierszowy, ale zniekształcony plik CSV.

Zastąp \" i koniec spacji po zakończeniu linii w następujący sposób:

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

Daje to:

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

Jeśli nie masz kontroli nad programem dostarczającym plik CSV, musisz otworzyć plik, odczytać zawartość, dokonać zamiany, a następnie przeanalizować plik CSV. Używam __ tutaj, ale możesz użyć innych niekonfliktowych znaków.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. wstaw, jeśli nie istnieje, po prostu wybierz w mysql

  2. django+mysql=Obiekt 'DatabaseWrapper' nie ma atrybutu 'Błąd bazy danych'

  3. Zapytanie MySQL z SUM() nie zwraca oczekiwanych wyników

  4. Jak dodać klienta za pomocą JDBC dla ClientDetailsServiceConfigurer w Springu?

  5. Jak wyświetlić zakres godzin?