Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Ruby CSV đọc các trường đa dòng

Vấn đề của bạn không phải là nhiều dòng mà là CSV không đúng định dạng.

Thay thế \" và dấu cách kết thúc sau một dòng kết thúc như thế này:

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

Điều này mang lại:

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

Nếu bạn không có quyền kiểm soát chương trình cung cấp CSV, bạn phải mở tệp, đọc nội dung, thực hiện thay thế và sau đó phân tích cú pháp CSV. Tôi sử dụng __ ở đây nhưng bạn có thể sử dụng các ký tự không xung đột khác.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tốt nhất để tạo thứ hạng trong MYSQL là gì?

  2. SQLException:Không tìm thấy trình điều khiển phù hợp

  3. Tạo một hàm với các đối số tùy chọn trong MySQL

  4. Bắt ngoại lệ chèn khóa trùng lặp

  5. Truy vấn sử dụng group_concat chỉ trả về một hàng