Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 解析字符串以在mongo db上保存数据_Ruby_String_Parsing_Hash_Mongoid - Fatal编程技术网

Ruby 解析字符串以在mongo db上保存数据

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, "

我有一个.txt文件,它不包含像这样的插入查询。我想解析file.txt并获取数据,以便保存在我的mongoid db中,用于rails应用程序。我尝试使用基本的ruby方法进行解析,但无法获取正确的格式。我可以从数据中获取一个哈希值,该哈希值可以直接用于实现批量插入或正则表达式,以仅解析和获取值

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(“,”)