← Voltar ao blog

Como popular banco de dados com dados fictícios brasileiros

·7 min de leitura

Todo projeto que lida com dados brasileiros precisa, em algum momento, de uma massa de testes realista. CPFs formatados, CNPJs válidos, nomes que fazem sentido, endereços com CEP correto. Usar Faker.js genérico gera “John Doe” morando em “123 Main Street” — nada útil quando seu sistema valida documentos brasileiros.

Por que dados genéricos não servem

Sistemas brasileiros validam CPF por dígito verificador, formatam telefone com DDD regional e esperam CEPs de 8 dígitos vinculados a estados reais. Dados genéricos quebram essas validações e geram bugs difíceis de reproduzir em staging.

Presets disponíveis na API

  • customer — nome, CPF, email, telefone, endereço. Ideal para tabelas de clientes.
  • employee — nome, CPF, conta bancária, chave PIX. Para sistemas de RH.
  • company — razão social, CNPJ, endereço comercial, telefone. Para cadastros B2B.
  • ecommerce_order — cliente + cartão + endereço de entrega. Para testar checkouts.

1. SQL direto via curl — o jeito mais rápido

Gere dados com export SQL e insira direto no banco:

# Gerar 100 clientes como INSERT statements
curl -X POST "https://fakeforge.com.br/api/generate" \
-H "Content-Type: application/json" \
-d '{"preset":"customer","quantity":100,"format":"sql"}' \
> seed.sql
# Executar no PostgreSQL
psql -d meu_banco < seed.sql

2. Laravel Seeder

Use o HTTP client nativo do Laravel para buscar dados da API:

// database/seeders/ClienteSeeder.php
use Illuminate\Support\Facades\Http;
public function run(): void
{
$response = Http::post(
'https://fakeforge.com.br/api/generate',
['preset' => 'customer', 'quantity' => 50]
);
foreach ($response->json() as $p) {
Cliente::create([
'nome' => $p['nome'],
'cpf' => $p['cpf'],
'email' => $p['email'],
]);
}
}

3. Prisma seed (Node.js/TypeScript)

// prisma/seed.ts
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
const res = await fetch(
'https://fakeforge.com.br/api/generate?preset=customer&quantity=30'
);
const pessoas = await res.json();
for (const p of pessoas) {
await prisma.cliente.create({
data: { nome: p.nome, cpf: p.cpf, email: p.email },
});
}

Experimente — gere uma pessoa fictícia

Dados brasileiros correlacionados

Clique em Gerar para começar

4. Django management command

# clientes/management/commands/seed_clientes.py
import requests
response = requests.post(
'https://fakeforge.com.br/api/generate',
json={'preset': 'customer', 'quantity': 100}
)
Cliente.objects.bulk_create([
Cliente(nome=p['nome'], cpf=p['cpf'], email=p['email'])
for p in response.json()
])

Dicas para seed em larga escala

  • Use format=sql para inserir direto sem ORM — mais rápido para volumes grandes
  • Desabilite índices e constraints antes do seed massivo e reabilite depois
  • Combine presets: customers + companies + ecommerce_orders para um ambiente completo
  • Salve a resposta da API como fixture JSON para rodar o seed offline
  • No CI/CD, gere dados frescos a cada pipeline run para evitar fixtures estáticas

Resumo

  • Dados genéricos quebram validações brasileiras — use dados específicos para BR
  • A API do FakeForge suporta export SQL, JSON e CSV para qualquer stack
  • Presets geram dados correlacionados (email usa o nome, CEP bate com estado)
  • Veja o gerador de pessoa e o gerador de empresa para testar visualmente
  • Consulte a documentação da API para detalhes dos endpoints