'
" ou " "
dans MySQL à l'aide d'un module CSV dans Ruby 2.3, les deux points suivants doivent être notés.
--Si le fichier CSV contient "" ", une erreur" "Citations illégales" se produira si "" "est inclus lors de la lecture du fichier, spécifiez doncquote_char: "\ x00"
.
--Depuis Ruby 2.4, vous pouvez utiliser l'option libéral_parsing
pour les modules CSV, mais pas avant la version 2.3.
--C'est une erreur de spécifier «" \ x00 "» qui ne devrait normalement pas exister dans le fichier. '
" doit être échappé à "\\'
" quand il est placé dans MySQL, alors remplacez-le par gsub.
require "csv"
summary = {}
CSV.foreach("myfile.tsv", col_sep: "\t", quote_char: "\x00", encoding: "UTF-8", headers: :first_row) do |row|
summary = {
:col1 => row[0].to_s,
:col2 => row[1].to_s.gsub("'", "\\\\'"),
:col3 => row[2].to_f,
}
puts summary
# MyModel.replace(summary)
end
col1 col2 col3
homemade cookies Aunt Stella's cookies 123
nickname Louis "Satchmo" Armstrong 456
yard-pound system 4' 10" 147.32
yard-pound system 2 4′ 10″ 147.32
{:col1=>"homemade cookies", :col2=>"Aunt Stella\\'s cookies", :col3=>123.0}
{:col1=>"nickname", :col2=>"Louis \"Satchmo\" Armstrong", :col3=>456.0}
{:col1=>"yard-pound system", :col2=>"4\\' 10\"", :col3=>147.32}
{:col1=>"yard-pound system 2", :col2=>"4′ 10″", :col3=>147.32}
Recommended Posts