はじめに
テーブルの統合することがあったので、手順を忘れないように記載します。
要件
approachesテーブルをinformationsテーブルへ統合する
目次
カラム追加
approachesテーブルにしか存在しないのは以下です。
・mail_address
・facebook
・line
マイグレーションファイル作成
マイグレーションファイルを作成して、統合元テーブルにしか存在しないカラムを統合先テーブルに追加する
rails g migration add_columns_to_informations
マイグレーションファイル編集
class AddColumnsToInformations < ActiveRecord::Migration[5.2]
def change
add_column :influencer_informations, :mail_address, :string
add_column :influencer_informations, :facebook, :string
add_column :influencer_informations, :line, :string
end
end
下記のコマンドを叩くと、カラムが作成される。
rails db:migrate
データコピー
informationsテーブルに【mail_address・facebook・line】カラムが生成されたのを確認してから、approachesテーブルの【mail_address・facebook・line】カラムのデータをコピーする。
SQL文でコピー (各カラムごとに作成し実行する)
今回はmail_addressカラムのみ記載します
UPDATE informations, approaches
SET
informations.mail_address = approaches.mail_address
WHERE
informations.influencer_id = approaches.influencer_id
AND
approaches.mail_address != "";
テーブル削除
informationsテーブルに【mail_address・facebook・line】にデータが入ったことを確認してから、approachesテーブルを削除する。
マイグレーションファイル作成
マイグレーションファイルを作成して、統合元テーブルにしか存在しないカラムを統合先テーブルに追加する
rails g migration DropApproaches
マイグレーションファイル編集
class DropApproaches < ActiveRecord::Migration[5.2]
def change
drop_table :approaches
end
end
下記のコマンドを叩くと、テーブルが削除される
rails db:migrate
まとめ
テーブルを統合するときには、マイグレーションファイルを2つ作成する必要があり、段階を踏んで実行していくことが必要だとわかりました。