解析一个字符串以保存mongodb上的数据

时间:2012-07-25 09:49:10

标签: ruby string parsing hash mongoid

我有一个.txt文件,其中不包含这样的插入查询。我想解析file.txt并获取数据,以便保存在我的mongoid db中,用于我的rails application.i尝试使用基本的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);

2 个答案:

答案 0 :(得分:1)

您需要一个带有INSERT INTO (...)VALUES (...)部分的正则表达式,并且不依赖于新行符号。例如:

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所需的所有数据。

答案 1 :(得分:0)

item.scan(/ VALUES \ s(。+)/)。first.gsub(/ VALUES \ s(|)| \“/,”“)。split(”,“)