Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

dino-tools/dbtestdata

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

8 Commits

Repository files navigation

NAME

dbtestdata

WHAT IS THIS?

MySQL専用です!!

データベースにダミーのテストデータを挿入したり、

すでにあるデータをダミー化したり、不要なデータを削除したりできます。

どのようなダミー化を行うかは設定ファイルで定義します。

INSTALL

dbtestdata/ ディレクトリの内容があれば動作します。

チェックアウトしてご利用下さい。

DESCRIPTION

コマンドラインの起動の方法

perl \
 dbtestdata.pl \
 insert \
 --username=root \
 --password \
 --database=hogedb \
 --conf=./conf1.pl \
 --conf=./conf2.pl

コマンドライン引数の説明

  • insert|update|delete - データの挿入 or ダミー化 or 不要データ削除 のいずれかの動作モードを選択します。
  • --username - データベースのユーザ名。
  • --password - データベースにパスワードがかかっているならこれを指定してください。
  • --database - ターゲットのデータベース名。
  • --conf=FILE名 - 設定ファイル名。複数個指定できます。

設定ファイルについて

通常のperlスクリプトです。以下のようなデータ構造をreturnしてください。必ずutf8で記述すること。

{
 name => この定義の名前,
 insert => { ...insert動作モード用の設定です。
 テーブル名1 => {
 count => 作成レコード数,
 clazz => {
 カラム名1 => データ生成関数,
 カラム名2 => データ生成関数
 }
 },
 テーブル名2 => {
 },
 ...
 },
 update => { ...update動作モード用の設定です。
 テーブル名1 => {
 primary => 主キーカラム名,
 clazz => {
 カラム名1 => データ生成関数,
 カラム名2 => データ生成関数
 }
 },
 テーブル名2 => {
 },
 ...
 },
 delete => [ ...delete動作モード用の設定です。
 レコードを全削除したいテーブル名1,
 レコードを全削除したいテーブル名2,
 ...
 ]
}

データ生成関数

これらが使えます。

RANDOM_LITERAL
RANDOM_INTEGER
RANDOM_DOUBLE
RANDOM_ALPHA
RANDOM_JA_KATAKANA
RANDOM_JA_HIRAGANA
RANDOM_JA_PREF
RANDOM_JA_NAME_KAN
RANDOM_JA_FIRSTNAME_KAN
RANDOM_JA_FAMILYNAME_KAN
RANDOM_JA_ZIPCODE
RANDOM_JA_TEL
RANDOM_DATETIME
RANDOM_EMAIL
PERL
LITERAL
COUNTER
CONCAT
SPRINTF
FOLD
SQL

詳細については以下のファイルの関数コメントを参照して下さい。

  • data/VariableDataGenerator.pm
  • sql/VariableSQLGenerator.pm

EXAMPLE

package example1;
use strict;
use warnings;
use data::VariableDataGenerator;
use sql::VariableSQLGenerator;
use utf8;
return {
 name => __PACKAGE__,
 update => {
 t_user => {
 primary => "id",
 clazz => {
 age => RANDOM_INTEGER(70, 15),
 card_types_id => RANDOM_LITERAL(0, 5),
 card_id => RANDOM_INTEGER(180, 1),
 level => RANDOM_INTEGER(99, 1),
 modified => RANDOM_DATETIME("2011-01-01", "2011-12-31"),
 created => SQL('NOW()')
 }
 },
 t_order => {
 primary => "id",
 clazz => {
 t_user_id => RANDOM_INTEGER(50000, 1),
 price => RANDOM_INTEGER(100000, 1000),
 item_id => RANDOM_INTEGER(180, 1),
 modified => RANDOM_DATETIME("2011-01-01", "2011-12-31"),
 created => SQL('NOW()')
 }
 }
 },
 delete => [ qw(
 t_mail_log
 t_credit_card_log
 )]
};

CHANGELOG

  • 2011年02月03日 初版
  • 2011年02月17日 設定ファイルの形式を変更しinsertとupdateを分離した。

AUTHOR

  • ryer

About

database testdata generator

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /