如何用脚本快速生成占位数据

wen 实用脚本 3

本文目录导读:

如何用脚本快速生成占位数据

  1. Python + Faker 库(最推荐)
  2. Node.js + Faker.js
  3. SQL 占位数据(MySQL/PostgreSQL)
  4. Bash + Linux 命令
  5. Java + JavaFaker
  6. 数据库专用工具
  7. 快速使用建议

Python + Faker 库(最推荐)

# 安装: pip install faker
from faker import Faker
import json
fake = Faker('zh_CN')  # 中文数据
# 生成单条数据
def generate_user():
    return {
        'name': fake.name(),
        'email': fake.email(),
        'phone': fake.phone_number(),
        'address': fake.address(),
        'company': fake.company(),
        'created_at': str(fake.date_time_this_year())
    }
# 生成多条数据
users = [generate_user() for _ in range(10)]
# 保存到JSON文件
with open('fake_users.json', 'w', encoding='utf-8') as f:
    json.dump(users, f, ensure_ascii=False, indent=2)
print("数据生成完成!")

Node.js + Faker.js

// 安装: npm install @faker-js/faker
const { faker } = require('@faker-js/faker');
const fs = require('fs');
// 生成用户数据
const users = Array.from({ length: 100 }, (_, i) => ({
    id: i + 1,
    name: faker.person.fullName(),
    email: faker.internet.email(),
    phone: faker.phone.number(),
    city: faker.location.city(),
    job: faker.person.jobTitle(),
    bio: faker.lorem.paragraph(),
    registered: faker.date.past()
}));
// 保存为JSON
fs.writeFileSync('users.json', JSON.stringify(users, null, 2));
console.log('生成了100条用户数据');

SQL 占位数据(MySQL/PostgreSQL)

-- 生成100条用户记录
INSERT INTO users (name, email, phone, created_at)
SELECT 
    CONCAT('用户', LPAD(seq, 4, '0')),
    CONCAT('user', seq, '@example.com'),
    CONCAT('138', LPAD(FLOOR(RAND() * 100000000), 8, '0')),
    DATE_ADD('2023-01-01', INTERVAL FLOOR(RAND() * 365) DAY)
FROM (
    SELECT @row := @row + 1 AS seq
    FROM information_schema.columns,
    (SELECT @row := 0) r
    LIMIT 100
) t;
-- 生成日期序列数据
WITH RECURSIVE dates AS (
    SELECT '2023-01-01' AS date
    UNION ALL
    SELECT DATE_ADD(date, INTERVAL 1 DAY)
    FROM dates
    WHERE date < '2023-12-31'
)
SELECT * FROM dates;

Bash + Linux 命令

#!/bin/bash
# 生成100行CSV占位数据
for i in $(seq 1 100); do
    echo "$i,user_$i,$(date -d "2023-01-01 + $i days" +%Y-%m-%d),$(($RANDOM % 10000 + 1000))"
done > data.csv
# 生成UUID列表
for i in {1..10}; do
    uuidgen
done > uuids.txt
# 生成手机号
for i in {1..10}; do
    echo "138$(printf '%08d' $RANDOM)"
done > phones.txt

Java + JavaFaker

// Maven依赖: com.github.javafaker:javafaker:1.0.2
import com.github.javafaker.Faker;
import java.util.*;
import java.io.*;
public class DataGenerator {
    public static void main(String[] args) throws IOException {
        Faker faker = new Faker(new Locale("zh-CN"));
        List<Map<String, String>> users = new ArrayList<>();
        for (int i = 0; i < 50; i++) {
            Map<String, String> user = new HashMap<>();
            user.put("id", String.valueOf(i + 1));
            user.put("name", faker.name().fullName());
            user.put("address", faker.address().fullAddress());
            user.put("phone", faker.phoneNumber().phoneNumber());
            user.put("email", faker.internet().emailAddress());
            users.add(user);
        }
        // 输出JSON
        ObjectMapper mapper = new ObjectMapper();
        mapper.writerWithDefaultPrettyPrinter()
              .writeValue(new File("users.json"), users);
        System.out.println("生成了50条用户数据");
    }
}

数据库专用工具

SQLite

-- 生成时间序列数据
WITH RECURSIVE cnt(x) AS (
    SELECT 1
    UNION ALL
    SELECT x + 1 FROM cnt WHERE x < 100
)
SELECT 
    x as id,
    '用户' || x as name,
    'user' || x || '@test.com' as email,
    datetime('now', '-' || x || ' days') as created_at
FROM cnt;

MongoDB

// mongo shell 脚本
db.users.insertMany(
    Array.from({length: 100}, (_, i) => ({
        name: `用户${i + 1}`,
        email: `user${i + 1}@test.com`,
        age: Math.floor(Math.random() * 50) + 20,
        createdAt: new Date(Date.now() - i * 86400000)
    }))
);

快速使用建议

最快速的方法(无需安装)

# 生成100个随机字符串(Linux/Mac)
for i in {1..100}; do echo "data_$i,$RANDOM,$(date +%s)"; done > quick_data.csv

Python一行代码(需安装faker)

python -c "from faker import Faker; f=Faker(); [print(f.name(), f.email()) for _ in range(10)]"

在线工具(无需编码)

  • JSON Generator: https://json-generator.com/
  • Mockaroo: https://www.mockaroo.com/
  • RandomUser: https://randomuser.me/

选择哪种方法取决于你的需求:

  • Python: 最灵活,数据类型丰富
  • SQL: 直接生成数据库测试数据
  • Bash: 最轻量,适合简单CSV数据
  • 在线工具: 零代码,适合一次性需求

需要我为你生成特定类型的数据吗?

抱歉,评论功能暂时关闭!