2017-04-01 2 views
0

ソースには1,500個のオブジェクトしか含まれていません。せいぜい2,000まで成長するかもしれません。私はPDFでオブジェクトを取得し、PDFリーダーで解析しています。これらは解析され、Stringオブジェクトとして行で返されます。PDF行をRails DBに抽出していますか?

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"] 

それから私は「」最後の名に付加し、配列オブジェクトを作成するため、Stringオブジェクトを分割削除:

row = @rows[0].tr(',', '').split #Array Objects 
=> ["1", "3", "215", "06/02/83", "Law", "Steve"] #Array Object 

私がしたいの各行を繰り返し、コンソールまたはフォーム経由でUserテーブルに挿入します。どのような方法を検討すべきですか?

ありがとうございます!

+1

あなたの質問は何ですか? Userテーブルに挿入する際にエラーが発生していますか? – Iceman

+0

@iceman - どこから始めるべきかわからない。反復処理を介したdb挿入にはどのような方法がありますか? – DawgOnKing

答えて

0

mysqlusersのテーブルがあり、active_recordの宝石がインストールされているとします。

あなたは、active_record(レールで一般的に使用されるORM)を必要とDBへの接続を確立し、ActiveRecord経由でユーザーテーブルへのアクセスを得るためにUserモデルを作成する必要がありますが、最初に単なるRubyスクリプトを書く場合:

require 'rubygems' 
require 'active_record' 

ActiveRecord::Base.establish_connection( 
    :adapter => 'mysql', 
    :host => 'localhost', 
    :database => 'your_db_name' 
) 

class User < ActiveRecord::Base 
end 

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 

そのすべてが一つのファイルで行うことができます。だから今あなたがする必要があるすべての行を反復処理し、User.createメソッドを呼び出すことです。

rakeタスクのようなものをRails環境に書き込む場合は、config/database.ymlにdb接続を設定し、app/modelsディレクトリにUserモデルを作成する必要があります。

関連する問題