19 个版本
0.2.2 | 2024年7月4日 |
---|---|
0.2.1 | 2024年6月16日 |
0.2.0 | 2024年4月26日 |
0.1.15 | 2024年4月4日 |
#1 in #infer
每月下载量42
65KB
1.5K SLoC
drivel
drivel
是一个用 Rust 编写的命令行工具,可以从示例 JSON(或 JSON 行)文件中推断模式,并基于推断的模式生成合成数据(即所谓的 "drivel")。
功能
- 模式推断:drivel 可以分析 JSON 输入并推断其模式,包括数据类型、数组长度和对象结构。
- 数据生成:基于推断的模式,drivel 可以生成符合推断结构的合成数据。
- 易于集成:drivel 从 stdin 读取 JSON 输入并将输出写入 stdout,允许轻松集成到管道和工作流程中。
安装
每个版本都提供了二进制文件和基于 shell 的安装程序。
要通过 Cargo 安装 drivel 可执行文件,请确保您已安装 Rust 工具链,然后运行
cargo install drivel
要将 drivel 作为项目依赖项添加,例如使用模式推断引擎,请运行
cargo add drivel
使用方法
Infer a schema from JSON input, and generate synthetic data based on the inferred schema.
Usage: drivel [OPTIONS] <COMMAND>
Commands:
describe Describe the inferred schema for the input data
produce Produce synthetic data adhering to the inferred schema
help Print this message or the help of the given subcommand(s)
Options:
--infer-enum Infer that some string fields are enums based on the number of unique values seen
--enum-max-uniq <ENUM_MAX_UNIQ> The maximum ratio of unique values to total values for a field to be considered an enum. Default = 0.1
--enum-min-n <ENUM_MIN_N> The minimum number of strings to consider when inferring enums. Default = 1
-h, --help Print help
-V, --version Print version
示例
考虑一个 JSON 文件 input.json
{
"name": "John Doe",
"id": "0e3a99a5-0201-4444-9ab1-8343fac56233",
"age": 30,
"is_student": false,
"grades": [85, 90, 78],
"address": {
"city": "New York",
"zip_code": "10001"
}
}
在 'describe' 模式下运行 drivel
cat input.json | drivel describe
输出
{
"age": int (30),
"address": {
"city": string (8),
"zip_code": string (5)
},
"is_student": boolean,
"grades": [
int (78-90)
] (3),
"name": string (8),
"id": string (uuid)
}
在 'produce' 模式下运行 drivel
cat input.json | drivel produce -n 3
输出
[
{
"address": {
"city": "o oowrYN",
"zip_code": "01110"
},
"age": 30,
"grades": [83, 88, 88],
"is_student": true,
"name": "nJ heo D",
"id": "9e0a7687-800d-404b-835f-e7d803b60380"
},
{
"address": {
"city": "oro wwNN",
"zip_code": "11000"
},
"age": 30,
"grades": [83, 88, 89],
"is_student": false,
"name": "oeoooeeh",
"id": "c6884c6b-4f6a-4788-a048-e749ec30793d"
},
{
"address": {
"city": "orww ok ",
"zip_code": "00010"
},
"age": 30,
"grades": [85, 90, 86],
"is_student": false,
"name": "ehnDoJDo",
"id": "71884608-2760-4853-8c12-e11149c642cd"
}
]
贡献
我们欢迎任何对改进或扩展 drivel 感兴趣的人的贡献!无论您是否有新功能、错误修复或对文档的改进的想法,请随时打开一个问题或提交一个拉取请求。
许可证
此项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件。
依赖关系
~13MB
~269K SLoC