Metadata-Version: 2.5
Name: planilha2sql
Version: 0.1.0
Summary: Converte planilhas Excel/CSV em banco SQLite ou script SQL, com inferencia automatica de tipo de coluna
Project-URL: Homepage, https://github.com/Netoovanzellii/planilha2sql
Project-URL: Repository, https://github.com/Netoovanzellii/planilha2sql
Project-URL: Issues, https://github.com/Netoovanzellii/planilha2sql/issues
Author: Neto Vanzelli
License-Expression: MIT
License-File: LICENSE
Keywords: csv,etl,excel,planilha,sql,sqlite
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Database
Classifier: Topic :: Office/Business :: Financial :: Spreadsheet
Classifier: Topic :: Utilities
Requires-Python: >=3.10
Requires-Dist: openpyxl>=3.1
Provides-Extra: dev
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Description-Content-Type: text/markdown

# planilha2sql

[![CI](https://github.com/Netoovanzellii/planilha2sql/actions/workflows/ci.yml/badge.svg)](https://github.com/Netoovanzellii/planilha2sql/actions/workflows/ci.yml)
[![PyPI](https://img.shields.io/pypi/v/planilha2sql)](https://pypi.org/project/planilha2sql/)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)

Converte planilhas Excel (`.xlsx`) ou CSV em um banco **SQLite** de verdade (ou num script `.sql` puro), com **inferência automática do tipo de cada coluna** — sem precisar desenhar schema na mão.

Nasceu de um padrão que se repete direto no meu trabalho: alguém manda uma planilha e o próximo passo é "isso precisa virar um banco/sistema". Esta ferramenta automatiza a parte chata desse meio de caminho.

## Instalação

```bash
pip install planilha2sql
```

## Uso

```bash
# gera vendas.db automaticamente (cada aba do Excel vira uma tabela)
planilha2sql vendas.xlsx

# escolher o nome do banco de saída
planilha2sql vendas.xlsx -o dados/vendas.db

# gerar um script .sql em vez de um banco (útil pra revisar antes de aplicar)
planilha2sql vendas.xlsx -o vendas.sql

# ou só imprimir o SQL no terminal
planilha2sql vendas.xlsx --print-sql

# rodar de novo sobre um banco que já existe
planilha2sql vendas.xlsx --if-exists replace   # apaga e recria a tabela
planilha2sql vendas.xlsx --if-exists append    # só insere por cima
```

Também funciona como biblioteca:

```python
from planilha2sql import converter_arquivo, converter_para_sql

tabelas = converter_arquivo("vendas.xlsx", "vendas.db")
# ["pedidos", "produtos"]

sql = converter_para_sql("vendas.xlsx")
print(sql)
```

## O que ele resolve

- **Cada aba do Excel vira uma tabela.** Um `.csv` vira uma tabela só.
- **Tipo de coluna é inferido a partir dos dados**, não do cabeçalho: uma coluna só com números inteiros vira `INTEGER`, com decimais vira `REAL` (aceita tanto `12.5` quanto `12,5` no padrão brasileiro), qualquer coisa fora disso vira `TEXT`.
- **Nomes de coluna e de aba são sanitizados** automaticamente: acento, espaço, `"Preço Unitário (R$)"` vira `preco_unitario_r`, nomes duplicados ganham sufixo (`nome`, `nome_2`), palavras reservadas de SQL ganham `_` no final.
- **Não depende de pandas** — só `openpyxl` pra ler `.xlsx` e `sqlite3`/`csv` da própria biblioteca padrão do Python.

## Limitações conhecidas

- Não detecta colunas de data/hora como tipo especial — viram `TEXT` (com o valor original preservado).
- Não lida com fórmulas do Excel além do valor já calculado (lê com `data_only=True`).
- Pensado pra planilhas de porte razoável (o arquivo inteiro é carregado em memória).

## Rodando os testes

```bash
pip install -e ".[dev]"
pytest --cov=planilha2sql
```
