【问题标题】:Parse a string to save the data on mongo db解析字符串以将数据保存在 mongodb 上
【发布时间】:2012-07-23 17:26:23
【问题描述】:

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

【问题讨论】:

  • 我朋友的建议,它可以工作 item.scan(/VALUES\s(.+)/).first.gsub(/VALUES\s(|)|\"/,"")。拆分(“,”)

标签: ruby string parsing hash mongoid


【解决方案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 所需的所有数据。

【讨论】:

    【解决方案2】:

    item.scan(/VALUES\s(.+)/).first.gsub(/VALUES\s(|)|\"/,"").split(", ")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-03
      • 2023-02-07
      • 2019-06-12
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      相关资源
      最近更新 更多