2012-07-25 17 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