Active RecordでPostgreSQLを操作する
今回はActive Recordを使ってデータを挿入する。
目次
Active RecordのWebページ
Active Recordの基礎
https://railsguides.jp/active_record_basics.html
テーブルやカラムを作成、変更する
Active Record
マイグレーション
https://railsguides.jp/active_record_migrations.html
データの読み書き
Active Recordの基礎 5 CRUD:
Active Record の基礎 | Rails ガイド
テーブルにデータを挿入する
テーブルは以前つくったものを使う。
実際にコードを書く。
activerecord_insert.rb
require 'active_record' require 'dotenv/load' ActiveRecord::Base.establish_connection( adapter: ENV['myadapter'], host: "", username: ENV['myusername'], password: "", database: ENV['mydatabase'] ) class Test < ActiveRecord::Base end #挿入するデータを配列に格納する results = [ [3,"男子シングルスカル","予選A",1,"クラブ3-1",2,"クラブ3-2",3,"クラブ3-3",4,"クラブ3-4",5,"クラブ3-5",6,"クラブ3-6"], [4,"女子シングルスカル","予選A",1,"クラブ4-1",2,"クラブ4-2",3,"クラブ4-3",4,"クラブ4-4",5,"クラブ4-5",6,"クラブ4-6"], [5,"女子クォドルプル","決勝",1,"クラブ5-1",2,"クラブ5-2",3,"クラブ5-3",4,"クラブ5-4",5,"クラブ5-5",6,"クラブ5-6"], [6,"男子エイト","決勝",1,"クラブ6-1",2,"クラブ6-2",3,"クラブ6-3",4,"クラブ6-4",5,"クラブ6-5",6,"クラブ6-6"] ] #データをテーブルに挿入する results.each do |result| Test.create( raceno: result[0], events: result[1], groups: result[2], rank1: result[3], crew_rank1: result[4], rank2: result[5], crew_rank2: result[6], rank3: result[7], crew_rank3: result[8], rank4: result[9], crew_rank4: result[10], rank5: result[11], crew_rank5: result[12], rank6: result[13], crew_rank6: result[14] ) end #テーブルからデータを呼び出す #全てのレコードを呼び出す records = Test.all #レコードごとにターミナル/PowerShellに表示する records.each do |record| puts "raceno: #{record['raceno']} #{record['events']} #{record['groups']}" puts "#{record['rank1']}着 #{record['crew_rank1']}" puts "#{record['rank2']}着 #{record['crew_rank2']}" puts "#{record['rank3']}着 #{record['crew_rank3']}" puts "#{record['rank4']}着 #{record['crew_rank4']}" puts "#{record['rank5']}着 #{record['crew_rank5']}" puts "#{record['rank6']}着 #{record['crew_rank6']}" end
コードの説明
クラスをつくるところまでは前回の記事を参照。
- 挿入するデータを配列に格納する
- テーブルにデータを挿入する
- 配列をeachメソッドでループさせて挿入するデータを取りだす
- テーブルに挿入するメソッドは
create
- カラム別に挿入する書式は
カラム名: データ
- テーブルからデータを呼び出す
- 今回は全てのレコードを呼び出す。メソッドは
all
- eachメソッドで1行ずつ呼び出す
- 呼び出したレコードをputsメソッドでターミナル/PowerShellに出力する
- カラムの内容を呼び出す書式は
変数名['カラム名']
- カラムの内容を呼び出す書式は
- 今回は全てのレコードを呼び出す。メソッドは
実効する。
PostgreSQLサーバーを起動したあとに次のコマンドを実行する。
bundle exec ruby activerecord_insert.rb
実行結果
raceno: 1 男子エイト 予選A組 1着 A大学 2着 B大学 3着 Cクラブ 着 着 着 raceno: 2 男子エイト 予選B組 1着 D大学 2着 E大学 3着 Fクラブ 着 着 着 raceno: 3 男子シングルスカル 予選A 1着 クラブ3-1 2着 クラブ3-2 3着 クラブ3-3 4着 クラブ3-4 5着 クラブ3-5 6着 クラブ3-6 raceno: 4 女子シングルスカル 予選A 1着 クラブ4-1 2着 クラブ4-2 3着 クラブ4-3 4着 クラブ4-4 5着 クラブ4-5 6着 クラブ4-6 raceno: 5 女子クォドルプル 決勝 1着 クラブ5-1 2着 クラブ5-2 3着 クラブ5-3 4着 クラブ5-4 5着 クラブ5-5 6着 クラブ5-6 raceno: 6 男子エイト 決勝 1着 クラブ6-1 2着 クラブ6-2 3着 クラブ6-3 4着 クラブ6-4 5着 クラブ6-5 6着 クラブ6-6
今回挿入したデータも表示されている。
データの挿入と呼び出しに成功した。
クローリング、スクレイピングと合わせればデータ収集に役立つ。
今回の動作確認環境
macOS 10.13.4
Ruby 2.4.4p296
ターミナル 2.8.2
Windows10 1709
Ruby 2.5.1p57 [x64-mingw32]
Windows PowerShell 5.1.16299.251
PostgreSQL 10.3
Active Record 5.2.0
Pg 1.0.0
dotenv 2.3.0