DataForge 高性能数据锻造工坊

为Rust开发者打造的随机数据生成与数据库填充解决方案

Crates.io License
main.rs
use dataforge::generators::*;
use dataforge::forge;

// 生成测试用户数据
let user = forge!({
    "id" => uuid_v4(),
    "name" => name::zh_cn_fullname(),
    "age" => number::adult_age(),
    "email" => internet::email(),
    "phone" => number::phone_number_cn(),
    "created_at" => datetime::iso8601()
});

println!("{}", serde_json::to_string_pretty(&user).unwrap());

核心特性

高性能数据生成

基于Rust的高性能随机数生成引擎,多线程并行生成,内存池优化技术

数据库支持

支持MySQL、PostgreSQL、SQLite数据库,自动Schema推断与匹配,批量插入优化

丰富的生成器

姓名、地址、网络数据、日期时间、数字等多种生成器,支持多语言数据

灵活的生成方式

支持正则表达式模式生成,提供便捷的宏接口,支持自定义生成器扩展

快速开始

1

安装依赖

在你的Cargo.toml中添加DataForge依赖

2

导入模块

导入所需的生成器模块和宏

3

开始生成

使用forge!宏或直接调用生成器函数

[dependencies]
dataforge = "0.1.0"

# 可选特性
dataforge = { version = "0.1.0", features = ["database"] }
use dataforge::generators::*;
use dataforge::forge;

let user = forge!({
    "id" => uuid_v4(),
    "name" => name::zh_cn_fullname(),
    "age" => number::adult_age(),
    "email" => internet::email(),
    "phone" => number::phone_number_cn(),
    "created_at" => datetime::iso8601()
});

println!("{}", serde_json::to_string_pretty(&user).unwrap());
use dataforge::core::{CoreEngine, GenConfig, GenerationStrategy};

let config = GenConfig {
    batch_size: 1000,
    strategy: GenerationStrategy::Random,
    null_probability: 0.05,
    ..Default::default()
};

let engine = CoreEngine::new(config);
let data = engine.generate_batch(100)?;

API文档

姓名生成器

name::zh_cn_fullname() 生成中文全名
name::en_us_fullname() 生成英文全名
name::ja_jp_fullname() 生成日文全名

地址生成器

address::zh_province() 生成中国省份
address::zh_address() 生成中国地址
address::us_state() 生成美国州名

网络数据生成器

internet::email() 生成邮箱地址
internet::url() 生成网站URL
internet::ip_address() 生成IP地址

数字生成器

number::phone_number_cn() 生成中国手机号
number::id_card_cn() 生成中国身份证号
number::credit_card_number() 生成银行卡号

使用示例

基础数据生成

use dataforge::{regex, pattern, rand_num};

// 使用正则表达式生成
let city = regex!(r"[\u4e00-\u9fa5]{2,5}市");

// 使用模式生成
let phone = pattern!("1[3-9]\\d{9}");

// 生成随机数
let age = rand_num!(18, 65);

批量数据生成

use dataforge::core::{CoreEngine, GenConfig};

let config = GenConfig {
    batch_size: 1000,
    ..Default::default()
};

let engine = CoreEngine::new(config);
let data = engine.generate_batch(10000)?;

自定义生成器

use dataforge::{DataForge, Language};

let mut forge = DataForge::new(Language::ZhCN);

forge.register("product_id", || {
    serde_json::json!(format!("PROD-{:06}", 
        rand::random::() % 1000000))
});

let product_id = forge.generate("product_id");