LoginSignup
0
2

More than 5 years have passed since last update.

[MySQL]データベース上にサンプルデータを追加するRubyスクリプト

Last updated at Posted at 2017-04-19

はじめに

この記事では、MySQLを使ってテーブルを作るところから、Rubyスクリプトでサンプルデータをデータベースに追加するところまでを紹介します。
ちなみに環境はこんな感じです。

$ mysql --version
mysql  Ver 14.14 Distrib 5.7.18, for osx10.12 (x86_64) using  EditLine wrapper

作りたいテーブルはこんな感じ。
データベース名:chatroom
テーブル名:users

カラム名 内容
user_id int, unsigned, not null
name varchar(20), not null
password char(64), not null
prefectures varchar(20), not null

追加したいサンプルデータはこんな感じ。

user_id name password prefectures
1 shinichi hoge gunma
2 ran fuga saitama
3 sonoko fizz ibaraki
4 kogoro buzz tokyo
5 ai ping kyoto

まずは、MySQLでテーブルを作ろう

MySQLに接続

$ mysql -uroot

データベース作成

mysql> create database if not exists chatroom;

データベースが作成できたか確認

mysql> show databases;

データベースへ接続

mysql> use chatroom;

テーブル作成

mysql> create table users (
    -> user_id int unsigned not null,
    -> name varchar(20) not null,
    -> password char(64) not null,
    -> prefectures varchar(256) not null
    -> )engine = InnoDB;

プライマリーキー設定

mysql> alter table users add primary key (user_id);

テーブルが作成できたか確認

mysql> show tables;

カラムの内容を確認

mysql> show columns from users;

つづいて、サンプルデータを追加していこう

ruby-mysqlを導入

$ sudo gem install ruby-mysql

Rubyスクリプトを書く

sampledata.rb
require 'mysql' #ruby-mysql
require 'digest/sha1' #passwordをSHA1でハッシュ化するために必要

# サンプルデータ
names = ['shinichi','ran','sonoko','kogoro','ai'] 
passwords = ['hoge','fuga','fizz','buzz','ping']
prefectures = ['gunma','saitama','ibaraki','tokyo','kyoto']

# MySQLに接続
client = Mysql.connect("127.0.0.1","root","","chatroom") 
#引数:(ホスト名/IPアドレス(127.0.0.1→localhost), ユーザー名, パスワード(最初は設定されてない), データベース名)

# INSERT文
# ここでは値が入る部分を?で設定する
query = client.prepare('insert into users values (?,?,?,?)')

range = 0..4 #4:追加したいデータ数-1
range.each do |num|
  # ここINSERTしたい値を実際に指定している
  query.execute num+1, names[num], Digest::SHA1.hexdigest(passwords[num]), prefectures[num]
  # Digest::SHA1.hexdigest() → 値をSHA1でハッシュ化する関数
  # 今回はpasswordをハッシュ化してからDBに入れています
end

スクリプトを実行

$ ruby sampledata.rb

サンプルデータが追加されたか確認

mysql> select * from users;

まとめ

多くのサンプルデータを毎回SQL文で打ち込むのは大変です。スクリプトを使えばだいぶ効率化すると思います。

0
2
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
2