[英]Rails import txt file into db
如何将这些值翻录到数据库表中?
首先,我只是把它放在那里,而不是让你推断:我是一个 ROR 菜鸟。 我正在设计一个填充数据库的应用程序——此时(SQLite)——允许用户对这些值执行 crud,并以与原始格式相同的格式导出文件。 这种格式是这样的,并通过文档结尾重复。 椭圆代表上一个和下一个音调。
...
[Tone27]
Atone = 707.3
Btone = 746.8
Btonelength = 3
Btonedebounce = 1
Description = Fire Department 1
mp3_Emails = email@address.com,email2@address.com,email3@address.com
amr_Emails = email2@textmessaging.com,email1@textmessaging.com
alert_command = c:\test.bat
post_email_command = c:\test2.bat
radio_frequency = 154.475
exclude_from = 13:25
exclude_to = 13:35
exclude_emails = email2@textmessaging.com,email2@address.com
...
现在,问题是,在 Rails 中,将这些值放入 db 表的最简单/最合适的方法是什么? 我知道我必须编写一个自定义解析器,但我对 ruby/rails 不够精通,无法有效地完成这项工作。
自定义解析器
您需要逐行读取文件并读出要保存的属性。 它可能看起来像这样:
file = File.new('example.txt', 'r')
while (line = file.gets)
if line.match(/^\W[a-zA-Z0-9]*\W/) # practice your regex at rubular.com
# create the object here
end
if line.match(/.*=.*/)
pieces = line.split('=')
key = pieces[0].strip
value = pieces[1].strip
# add this to the object here
end
end
我建议抓住每一行,修剪空白(如果有的话),然后在 = 符号上拆分,然后再次修剪。 你有你的键/值对。
每个 [Tone##] 都是一个新对象,因此您需要将其计划到您的一个或多个循环中。
高级概述
首先,您应该使用迁移设计数据库表并创建模型来支持这些表。
接下来,您需要解析文本文件以创建具有您刚刚解析的属性和值的对象。 这一步是您将遇到的最纯正的 ruby(此处对 Rails 没有太大帮助)。 这将需要自定义解析器在文本文件中查找要提取的特定值。
使用解析出文本文件的属性和值创建对象后,您需要将所有这些对象保存到数据库中。
我建议在深入研究这个应用程序之前构建一个示例或演示应用程序。 有一些教程可以让您在几个小时内启动并运行一个简单的应用程序,达到您的经验水平。
这是您需要完成的工作的高级概述,每个步骤很可能会导致更具体的 StackOverflow 问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.