0
0

More than 1 year has passed since last update.

テーブルを統合する

Posted at

はじめに

テーブルの統合することがあったので、手順を忘れないように記載します。

要件

approachesテーブルをinformationsテーブルへ統合する

目次

  1. カラム追加する
  2. データをコピーする
  3. テーブルを削除する

カラム追加

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つ作成する必要があり、段階を踏んで実行していくことが必要だとわかりました。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0