本文目录导读:

- Python + Faker 库(最推荐)
- Node.js + Faker.js
- SQL 占位数据(MySQL/PostgreSQL)
- Bash + Linux 命令
- Java + JavaFaker
- 数据库专用工具
- 快速使用建议
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数据
- 在线工具: 零代码,适合一次性需求
需要我为你生成特定类型的数据吗?