キムラデービーブログ

オープンソースデータベースを加速する「キムラデービー」のブログです。カレー日記を兼ねてます。なお著者は2010-06-01より日本オラクルに在籍していますが、本サイト(ブログ、またはウェブサイト)において示されている見解は、私自身の見解であって、オラクルの見解を必ずしも反映したものではありません。
<< くんかれ全部のせランチセット | main | 四国鉄道文化館 >>
テストデータ作成時に便利なストアドファンクション
0
    JUGEMテーマ:コンピュータ


    この記事は MySQL Casual Advent Calendar 2013 の 13 日目です。

    カジュアル! ということで、テストデータ作成時にいつも'AAAA'ばかりでは辛いので、MySQLで利用できる10行ほどのストアドファンクションをご紹介します。

    拙書「プロになるためのデータベース技術入門」p.223では「それっぽい」苗字を返すrand_family_nameという以下のファンクションを紹介しました。

    delimiter $
    create function rand_family_name() returns varchar(10)
    begin
    declare v_family_name varchar(10) default '小笠原';
    declare v_f1,v_f2 varchar(5);
    set v_f1=mid('佐鈴田畑山池石川渡高大中小伊斉加吉井清松竹梅木林森長橋内外金',FLOOR(1 + RAND()*30),1);
    set v_f2=mid('藤本辺畑橋村田川上水中口島崎井清松竹梅木林森内外金野原塚部池',FLOOR(1 + RAND()*30),1);
    if (v_f1 !=v_f2) then
    set v_family_name = concat(v_f1, v_f2);
    end if;
    return(v_family_name);
    end$
    delimiter ;

    これはmid関数をつかって一文字抜き出して合成するというものでしたが、文字単位でなく文字列単位で行いたいときにはELT関数を使います。これは第一引数の数字にあわせて文字列を返すというものです。

    delimiter $
    create function rand_virtual_name() returns varchar(20)
    begin
    declare v_virtual_name varchar(20);
    declare v_f1,v_f2 varchar(10);
    set v_f1=elt(FLOOR(1 + RAND()*20),'コードギアス亡国の','ジョジョの','中二病でも','アイドル','恋と選挙と','電波女と','アウトブレイク','ささみさん','人類は','テラ','進撃の','僕は友達が','とある魔術の','謎の','殺人','インフィニット','魔法少女','ガンダム','13日の','さんをつけろよ');
    set v_f2=elt(FLOOR(1 + RAND()*20),'アキト','奇妙な冒険','恋がしたい!','マスター','チョコレート','青春男','カンパニー','@がんばらない','衰退しました','フォーマーズ','巨人','少ない','禁書目録','彼女X','教室','ストラトス','まどか☆マギカ','UC[ユニコーン]','金曜日','デコ助野郎!');
    set v_virtual_name = concat(v_f1, v_f2);
    return(v_virtual_name);
    end$
    delimiter ;

    乱数により時々実在の何かになってしまうかもしれませんが、まぁ乱数のせい、ということで :)

    実行してみますぜ。

    えいっ。

    mysql> select rand_virtual_name();
    +----------------------+
    | rand_virtual_name() |
    +----------------------+
    | 人類はまどか☆マギカ |
    +----------------------+
    1 row in set (0.00 sec)

    うーん、博愛的だなぁ。

    mysql> select rand_virtual_name();
    +----------------------------+
    | rand_virtual_name() |
    +----------------------------+
    | インフィニット衰退しました |
    +----------------------------+
    1 row in set (0.00 sec)

    いや、確かにシーズン2はチト力が落ちているかもしれんけど。。。

    mysql> select rand_virtual_name();
    +-------------------------+
    | rand_virtual_name() |
    +-------------------------+
    | とある魔術のデコ助野郎! |
    +-------------------------+
    1 row in set (0.00 sec)

    誰? 誰のこと??

    mysql> select rand_virtual_name();
    +------------------------+
    | rand_virtual_name() |
    +------------------------+
    | ガンダム@がんばらない |
    +------------------------+
    1 row in set (0.00 sec)

    がんばって〜。

    ということで、乱数による偶然の笑いを得るか、乱数の精度に嘆きつつ、文字列を多くするかして
    辛いテストを乗り越えてください。。。。

    明日 12/14 は @sh2nd さんです。お楽しみに。

    | meijik | MySQL | 00:58 | comments(1) | trackbacks(0) | - | - |
    Excelを使ってダイレクトにテストデータを作成してそのままデータベースに登録できます。

    http://www.vector.co.jp/soft/winnt/business/se475115.html
    ダウンロード:
    http://www.vector.co.jp/download/file/winnt/business/fh621537.html
    | 名無しさん | 2014/01/12 11:51 AM |









    http://blog.kimuradb.com/trackback/877344
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
    << September 2019 >>
    + RECOMMEND
    100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊
    100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊 (JUGEMレビュー »)

    100人のうちの一人としてミックさんの本を推薦しています。
    + RECOMMEND
    MySQL 5.1 Plugin Development
    MySQL 5.1 Plugin Development (JUGEMレビュー »)
    Andrew Hutchings,Sergei Golubchik
    MySQL 5.1 のプラグインを作るならこれ!
    + RECOMMEND
    AWKを256倍使うための本 (Ascii 256倍)
    AWKを256倍使うための本 (Ascii 256倍) (JUGEMレビュー »)
    志村 拓,鷲北 賢,西村 克信
    ここにきてまさかの復刊。15〜16年前の本ですが、いまでも十分役立ちますよ!!
    + RECOMMEND
    Linux-DB システム構築/運用入門 (DB Magazine SELECTION)
    Linux-DB システム構築/運用入門 (DB Magazine SELECTION) (JUGEMレビュー »)
    松信 嘉範
    Linux-DB システム構築の新スタンダード。DB Magazine人気連載、待望の書籍化です!!
    + RECOMMEND
    + RECOMMEND
    超・極める!MySQL
    超・極める!MySQL (JUGEMレビュー »)
    坂井 恵,志村 和彦,ひろせ まさあき,松信 嘉範
    内容は少々古くなりましたが、内部説明があり、いろいろ面白いです。
    + RECOMMEND
    The Root of .NET Framework
    The Root of .NET Framework (JUGEMレビュー »)
    荒井 省三
    .NETの根っこをつかむ、か?
    + RECOMMEND
    エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド
    エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド (JUGEMレビュー »)
    奥野 幹也
    これまでにない構築、そして構築後のMySQLのための本。
    + RECOMMEND
    Database Management Systems
    Database Management Systems (JUGEMレビュー »)
    Raghu Ramakrishnan,Johannes Gehrke
    ミックさん連載の参考書籍です。
    + RECOMMEND
    Advanced Programming in the UNIX Environment: Paperback Edition (2nd Edition) (Addison-Wesley Professional Computing Series)
    Advanced Programming in the UNIX Environment: Paperback Edition (2nd Edition) (Addison-Wesley Professional Computing Series) (JUGEMレビュー »)
    W. Richard Stevens,Stephen A. Rago
    必読! といいつつ私が読んだのは初版の日本語訳です。差分はチェックしないといけませんね。
    + RECOMMEND
    + RECOMMEND
    + RECOMMEND
    Western Digital Scorpio Blue 2.5inch 5400rpm 320GB 8MB PATA WD3200BEVE
    Western Digital Scorpio Blue 2.5inch 5400rpm 320GB 8MB PATA WD3200BEVE (JUGEMレビュー »)

    DELL SX260の換装用に購入。今はコチラのほうが安いですね。
    + RECOMMEND
    情熱プログラマー ソフトウェア開発者の幸せな生き方
    情熱プログラマー ソフトウェア開発者の幸せな生き方 (JUGEMレビュー »)
    Chad Fowler
    OSC2010神戸に出展されたジュンク堂で買いました。
    + RECOMMEND
    Software Design 総集編 【2000~2009】(DVD付)
    Software Design 総集編 【2000~2009】(DVD付) (JUGEMレビュー »)

    メガトン級の過去記事。売り切れる前にお店に急げ!
    + RECOMMEND
    + RECOMMEND
    玄人志向 2.5型HDDケース SATA対応USB2.0接続 GW2.5AI-SU2
    玄人志向 2.5型HDDケース SATA対応USB2.0接続 GW2.5AI-SU2 (JUGEMレビュー »)

    Aspire 1410 HDD換装後、昔のHDDはこれにいれます。
    + RECOMMEND
    + RECOMMEND
    acer Aspire Timeline AS1410 11.6型ノートPC Windows7搭載 250GB ブラック AS1410-KK22
    acer Aspire Timeline AS1410 11.6型ノートPC Windows7搭載 250GB ブラック AS1410-KK22 (JUGEMレビュー »)

    色違い黒(他に青と白があります): メモリは最大4GBとあるが、がんばれば8GBいけるらしい。
    + RECOMMEND
    Firebird 徹底入門
    Firebird 徹底入門 (JUGEMレビュー »)
    木村 明治,はやし つとむ,坂井 恵
    Firebird日本ユーザ会のはやしさん、そしてMyNAから拝借(?) してきた坂井さんとともに書きました。まだ誰も知らないFirebird 2.5や、いままでドキュメントのなかったツール類についてもソースを確認してとりあげた本です。是非ご活用ください。
    + SELECTED ENTRIES
    + RECENT COMMENTS
    • [ミュージシャンに聴かせたい・弾かせたい!] (4) 山田元気様
      meijik (07/27)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      meijik (03/03)
    • 2019年の木村明治
      田中尚 (01/08)
    • 使い慣れたSQLに潜む実装依存: Firebirdの場合(6) 文字列との結合演算子
      noname (12/10)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      Moriaki_ (01/05)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      Moriaki_ (01/05)
    • 2015年版 InterBaseの歩み
      nakagami (12/06)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      meijik (11/22)
    • 分散DB本読書会第46回メモ「STOP AFTER 10」
      masudahidehiko (09/01)
    • Windows上でのMySQLビルド方法
      kinoyasu (03/31)
    + RECENT TRACKBACK
    + CATEGORIES
    + ARCHIVES
    + MOBILE
    qrcode
    + LINKS
    + PROFILE