LoginSignup
12
12

More than 5 years have passed since last update.

膨大なテストデータを簡単につくる

Last updated at Posted at 2015-12-13

参考記事

https://www.softel.co.jp/blogs/tech/archives/4730
http://qiita.com/tayasu/items/c5ddfc481d6b7cd8866d

SQL

はじめに、空データを作成します。
(倍々に増えていきます。)

INSERT INTO item () VALUES (); --1行目作成
INSERT INTO item (id) SELECT 0 FROM item; --2行になる
INSERT INTO item (id) SELECT 0 FROM item; --4行になる
INSERT INTO item (id) SELECT 0 FROM item; --8行になる
INSERT INTO item (id) SELECT 0 FROM item; --16行になる

データをランダムにUPDATEします。

UPDATE item SET 
item_id = CEIL(RAND() * 10000),  -- ①
item_name = CONCAT(SUBSTRING(MD5(RAND()), 1, 5),'商品'),  -- ②
t_stamp = ((RAND()*(0.1464706800 - 0.1433084400)+0.1433084400)*10000000000), -- ③
next_m_timestamp = t_stamp + 2592000,  -- ④
del_flg = ROUND(RAND());  -- ⑤

解説

①小数点切り上げ, ランダムな数字

item_id = CEIL(RAND() * 10000),  -- ①

CEIL - 小数点切り上げ
RAND - 0~1の間の浮動小数点乱数を計算

②文字の連結, ランダムな文字

item_name = CONCAT(SUBSTRING(MD5(RAND()), 1, 5),'商品'),  -- ②

CONCAT - 文字の連結を行う
SUBSTRING(MD5(RAND()), 1, 5)
- MD5(RAND() => ランダムな文字列,
- 第2引数 => ランダムな文字列のstart位置
- 第3引数 => ランダムな文字列のend位置

③RANDの範囲指定

t_stamp = ((RAND()*(0.1464706800 - 0.1433084400)+0.1433084400)*10000000000), -- ③

(RAND()*(① - ②)+②)*10000000000 -- ① ~ ② の間でランダム値が出力される。

④計算値の使用

next_m_timestamp = t_stamp + 2592000,  -- ④

⑤四捨五入

del_flg = ROUND(RAND()),  -- ⑤

ROUND - 四捨五入

12
12
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
12
12