DDLからテストデータ生成するやつを作りました
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/ みたいなサイトが結構あります。
探せばこのライブラリと同じようなものもあるかもしれません。
Author And Source
この問題について(DDLからテストデータ生成するやつを作りました), 我々は、より多くの情報をここで見つけました https://qiita.com/kena0ki/items/0b8e2ab727efae6dfa45著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .