2012-07-25 58 views
0

我有一个.txt文件,其中不包含像这样的插入查询。我想解析file.txt并获取数据以保存在我的mongoid数据库中用于我的rails应用程序。我尝试使用基本的ruby方法解析,但无法获得正确的格式。我可以从直接用于实现批量插入或正则表达式解析并获取值的数据中获得散列吗?解析一个字符串以保存mongo db上的数据

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); 
+0

所建议我的朋友和它的作品item.scan(/ VALUES \ s \(。+ \)/)。first.gsub(/ VALUES \ s \(| \)| \“/,”“)。split(”,“) – Bijendra 2012-07-26 11:13:51

回答

0

item.scan(/ VALUES \ S(+)/。)first.gsub(/ VALUES \ S(|)| \ “/”, “)。分裂(”,“)

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。

+0

Thanx的答复 – Bijendra 2012-07-26 11:14:57