将PDF行提取到Rails db?

时间:2017-04-01 20:01:25

标签: ruby-on-rails arrays ruby pdf

我的来源只包含1,500个对象。最多可能会增加到2,000。我通过PDF获取对象并使用PDF Reader解析。它们被行解析并作为String对象返回:

buf

然后我删除附加到姓氏的“,”并拆分String对象,从而创建一个数组对象:

file = File.open("app/assets/images/file.pdf")
reader = PDF::Reader.new(file)
page = reader.pages[0]
rows = page.text.scan(/^.+/) #String Objects
rows.slice!(0..3)    #Removes Header Info
Sample object :

=> ["1", "3", "215", "06/02/83", "Law,", "Steve"]

我想遍历每一行并通过控制台或表单插入到User表中。我应该考虑哪些方法?

谢谢!

1 个答案:

答案 0 :(得分:0)

假设您的mysql表中包含users表,并且安装了active_record gem。

如果您首先编写普通ruby脚本,则需要active_record(常用于rails中的ORM),建立与db的连接并创建User模型以通过{{访问users表1}}:

ActiveRecord

所以现在你需要做的就是迭代行并调用require 'rubygems' require 'active_record' ActiveRecord::Base.establish_connection( :adapter => 'mysql', :host => 'localhost', :database => 'your_db_name' ) class User < ActiveRecord::Base end 方法:

User.create

一切都可以在一个文件中完成。

如果您在Rails环境中编写类似rake任务的内容,则需要在rows.slice!(0..3).each do |row| row.reverse! # reverse array so we can easily access its elements with ruby Array methods first_name = row.first last_name = row.second.sub(/,/, '') # remove ',' symbol birth_date = row.third ... User.create(:first_name => first_name, :last_name => last_name, :birth_date => birth_date, ...) # I assumed you have first_name, last_name, ..., columns in your users table end 中配置数据库连接,并在config/database.yml目录中创建User模型。