0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DDLからテストデータ生成するやつを作りました

Last updated at Posted at 2021-03-30

DDL(create table 文)からデータを作成するライブラリを作成したので、その紹介です。

動機

単体テストとかでテーブルデータを作るときは

  • テーブルのデータ型に合っていて
  • NULLではなくて
  • 行に対しても列に対してもできるだけ値に被りがなくて
  • MAX桁数が入っている

ようなデータが欲しいことが結構あって、そういうデータを生成する手間を省きたかったからです。

機能について

どんなものかはデモページを見て頂いた方が早いのですが、
こんな定義があったとして、

 create table a (
   c1 char(5),
   c2 integer,
   c3 float,
   c4 binary(8)
 );

生成されるデータはこんな感じです。

   c1      c2  c3    c4
L1 "a0001","1","0.1","b0000001"
L2 "a0002","2","0.2","b0000002"
L3 "a0003","3","0.3","b0000003"
L4 "a0004","4","0.4","b0000004"

生成されるデータはオプションとカラムのデータ型の定義によって変わります。

オプションとか

オプションとかサポートしているデータ型とかはAPIに書いてあります。

オプションには行ごとに実行されるコールバック関数もあるので、データは割と自由に加工できるようになっています。

SQL パーサー

SQLはDBMS製品によって構文が変わったりするので、パーサーエラーになる可能性は割と高いと思います。
ただ、パーサー部分は、sqlparser-rsという Rust のライブラリをTypeScriptに移植して作っていて、元のライブラリが ANSI standards に準拠する形で作られているため、このライブラリも基本的にはSQL標準に準拠する形になっているので、データ生成に使用するカラム定義部分はパーサーで読み込めることが期待されます。

類似品

リアリティのあるデータが欲しい場合は http://filldb.info/ みたいなサイトが結構あります。
探せばこのライブラリと同じようなものもあるかもしれません。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?