npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@codemastersolutions/db-utility

v0.0.4

Published

Database utility for migrations, seeders, factories, introspection and more...

Downloads

247

Readme

DbUtility

O mais poderoso utilitário de banco de dados.

npm version License: MIT

🇺🇸 English | 🇪🇸 Español

DbUtility é um utilitário poderoso para manipulação de bancos de dados Microsoft SQL Server, MySQL e PostgreSQL. Desenvolvido em Node.js e TypeScript, visa simplificar a conexão com banco de dados, introspecção, exportação de models e criação de migrations.

Funcionalidades

  • Suporte Multi-Banco: Conecte-se ao Microsoft SQL Server, MySQL e PostgreSQL usando drivers oficiais (mssql, mysql2, pg).
  • Configuração Flexível: Detalhes de conexão via CLI, .env, arquivos de configuração JSON.
  • Introspecção: Analise seu banco de dados para listar tabelas, views, stored procedures, funções e triggers.
  • Exportação de Models: Exporte tabelas do banco de dados para models do Sequelize, TypeORM e Prisma (Em breve).
  • Geração de Migrations: Crie migrations a partir de tabelas existentes no banco de dados para Sequelize, TypeORM e Prisma (Em breve).

Instalação

npm install @codemastersolutions/db-utility
# ou globalmente
npm install -g @codemastersolutions/db-utility

Configuração

Inicialização

Você pode inicializar um arquivo de configuração padrão usando o comando CLI:

dbutility --init

Se o arquivo já existir, você pode forçar a recriação com os valores padrão:

dbutility --init -f
# ou
dbutility --init --force

Arquivo de Configuração (dbutility.config.json)

O arquivo de configuração permite definir o idioma da CLI, diretórios de saída, padrões de nomenclatura e configurações de conexão com o banco de dados.

{
  "language": "pt-BR",
  "introspection": {
    "outputDir": "db-utility-introspect"
  },
  "migrations": {
    "outputDir": "db-utility-migrations",
    "fileNamePattern": "timestamp-prefix"
  },
  "connection": {
    "type": "postgres",
    "host": "localhost",
    "port": 5432,
    "username": "usuario",
    "password": "senha",
    "database": "meubanco",
    "ssl": false
  }
}

Prioridade de Configuração

A configuração é carregada com a seguinte ordem de prioridade (prioridade mais alta sobrescreve a mais baixa):

  1. Flags da CLI: Argumentos passados diretamente para o comando (ex: -u usuario).
  2. Arquivo de Configuração: Configurações no dbutility.config.json.
  3. Variáveis de Ambiente: Variáveis definidas no .env.

Isso permite ter configurações base no .env, configurações específicas do projeto no dbutility.config.json e sobrescrever valores específicos (como senha) via CLI quando necessário.

Variáveis de Ambiente (.env)

Você também pode configurar o DbUtility usando variáveis de ambiente.

# Idioma (pt-BR, en, es)
DB_UTILITY_LANG=pt-BR

# Diretórios de Saída
DB_UTILITY_INTROSPECTION_OUTPUT_DIR=meu-diretorio-introspect
DB_UTILITY_MIGRATIONS_OUTPUT_DIR=meu-diretorio-migrations

# Padrão de Nome de Arquivo de Migration (timestamp-prefix, prefix-timestamp)
DB_UTILITY_MIGRATIONS_FILE_NAME_PATTERN=prefix-timestamp

# Conexão com Banco de Dados (Fallback/Base)
DB_TYPE=postgres
DB_HOST=localhost
DB_PORT=5432
DB_USER=usuario
DB_PASSWORD=senha
DB_NAME=meubanco

CLI - Interface de Linha de Comando

Nota de Segurança: Recomendamos fortemente o uso de um usuário de banco de dados com permissões de somente leitura (SELECT) para realizar operações de introspecção e exportação. Isso minimiza riscos de alterações acidentais nos dados. A biblioteca DbUtility executa apenas consultas de metadados (estrutura do banco) e bloqueia comandos que possam alterar dados ou ler registros das tabelas de negócio.

O DbUtility oferece uma CLI robusta para interagir com seus bancos de dados.

Conectar ao Banco de Dados

Teste a conexão com seu banco de dados.

dbutility connect -t postgres -H localhost -P 5432 -u usuario -p senha -d banco_dados --ssl

Realizar Introspecção

Analise o esquema do banco de dados e gere relatórios de introspecção.

dbutility introspect -t mysql -H localhost -P 3306 -u usuario -p senha -d banco_dados

Exportar Models

Exporte a estrutura do banco de dados para models de ORM.

dbutility export --target sequelize --output ./src/models -t postgres ...

Gerar Migrations

Gere migrations a partir da estrutura existente do banco de dados. Este comando limpa o diretório de saída antes de gerar novos arquivos.

dbutility migrate --target sequelize --output ./migrations -t postgres ...

Opções:

  • --data: Gera migrations de dados (seeds) para as tabelas especificadas.
  • --only-data: Gera APENAS migrations de dados (seeds).
  • --tables <tables>: Lista de tabelas separadas por vírgula para exportar dados.

Ao usar --data, os arquivos de seed são gerados imediatamente após a migration de criação da tabela correspondente.

Testar Migrations

Teste as migrations geradas usando containers Docker.

dbutility test --target sequelize --dir ./migrations/sequelize --engines postgres:14

Opções:

  • --target <target>: ORM alvo (sequelize, typeorm).
  • --dir <dir>: Diretório contendo as migrations (opcional).
  • --engines <engines>: Lista separada por vírgula de engines de banco de dados para testar (ex: postgres:14, mysql:8). Se omitido, tenta ler database-info.json gerado pelo comando migrate.

Requisitos:

  • Docker deve estar instalado e em execução.

Opções da CLI

  • -t, --type <type>: Tipo de banco de dados (postgres, mysql, mssql)
  • -H, --host <host>: Host do banco de dados
  • -P, --port <port>: Porta do banco de dados
  • -u, --username <username>: Usuário do banco de dados
  • -p, --password <password>: Senha do banco de dados
  • -d, --database <database>: Nome do banco de dados
  • --ssl: Habilitar SSL (opcional)
  • -c, --config <path>: Caminho para um arquivo de configuração específico

Licença

MIT © CodeMaster Soluções

Veja LICENSE.pt-BR para mais informações.