Ruby 解析字符串以在mongo db上保存数据
我有一个.txt文件,它不包含像这样的插入查询。我想解析file.txt并获取数据,以便保存在我的mongoid db中,用于rails应用程序。我尝试使用基本的ruby方法进行解析,但无法获取正确的格式。我可以从数据中获取一个哈希值,该哈希值可以直接用于实现批量插入或正则表达式,以仅解析和获取值Ruby 解析字符串以在mongo db上保存数据,ruby,string,parsing,hash,mongoid,Ruby,String,Parsing,Hash,Mongoid,我有一个.txt文件,它不包含像这样的插入查询。我想解析file.txt并获取数据,以便保存在我的mongoid db中,用于rails应用程序。我尝试使用基本的ruby方法进行解析,但无法获取正确的格式。我可以从数据中获取一个哈希值,该哈希值可以直接用于实现批量插入或正则表达式,以仅解析和获取值 INSERT INTO "venues" ("_id", "postal_code", "lat", "lng", "address", "title", "type") VALUES (33, "
INSERT INTO "venues" ("_id", "postal_code", "lat", "lng", "address", "title", "type")
VALUES (33, "SW1A 0AA", "51.49984", "-0.124663", "BIG BEN & HOUSES OF PARLIAMENT, House of
Commons, London, SW1A 0AA","BIG BEN & HOUSES OF PARLIAMENT", 2);
您需要一个regexp,它将
插入到(…)
和值(…)
部分,并且不依赖于新行符号。例如:
str.gsub(/(\r|\n)/, '') =~ /INSERT INTO "(\w{1,})" \((.*{1,})\) VALUES \((.*{1,})\)/
然后您将有下一个变量:
table, keys, values = $1, $2, $3
您还可以清除额外符号中的键和值:
keys.split(",").map {|val| val.gsub("\"", '').strip }
values.split(",").map {|val| val.gsub("\"", '').strip }
现在,您已经拥有了处理迁移到MongoDB所需的所有数据。item.scan(/VALUES\s(+)/).first.gsub(/VALUES\s(|)s(|)\\“/,”).split(“,”)由我的朋友建议,它可以运行item.scan(/VALUES\s(+)/).first.gsub(/VALUES\s(|)\\“/,”).split(“,”).split(“,”)