Extract stored procedures from MySQL/SingleStore databases
Project description
MySQL Stored Procedure Extractor
Herramienta de línea de comandos para extraer procedimientos almacenados y funciones de bases de datos MemSQL/SingleStore (y MySQL compatible) a archivos SQL individuales.
Características
✅ Extrae procedimientos almacenados y funciones
✅ Guarda cada uno en archivos SQL individuales
✅ Formato listo para re-importar (con DROP IF EXISTS)
✅ Soporte para archivos .env para credenciales
✅ CLI intuitivo con múltiples opciones
Instalación
pip install mysql-sp-extractor
Uso Rápido
1. Usando archivo .env (recomendado)
Crea un archivo .env:
DB_HOST=localhost
DB_PORT=3306
DB_USER=admin
DB_PASS=password
DB_NAME=mi_base_datos
OUTPUT_DIR=./stored_procedures
Ejecuta:
mysql-sp-extractor
2. Usando argumentos de línea de comandos
mysql-sp-extractor --host localhost --user admin --database mydb --output-dir ./backup
3. Usando como librería Python
from mysql_sp_extractor import StoredProcedureExtractor
extractor = StoredProcedureExtractor(
host='localhost',
port=3306,
user='admin',
password='password',
database='mydb',
output_dir='./sp_backup'
)
if extractor.connect():
results = extractor.extract_all(include_functions=True)
print(f"Extraídos: {results['procedures']} procedimientos, {results['functions']} funciones")
extractor.disconnect()
Opciones del CLI
mysql-sp-extractor [opciones]
Opciones:
--env FILE Archivo .env con configuración (default: .env)
--host HOST Hostname de la base de datos
--port PORT Puerto (default: 3306)
--user USER Usuario
--password PASSWORD Contraseña
--database DB Nombre de la base de datos
--output-dir DIR Directorio de salida (default: ./stored_procedures)
--no-functions No extraer funciones, solo procedimientos
--version Mostrar versión
--help Mostrar ayuda
Ejemplos
Extraer solo procedimientos (sin funciones)
mysql-sp-extractor --no-functions
Usar archivo .env personalizado
mysql-sp-extractor --env .env.production
Especificar directorio de salida
mysql-sp-extractor --output-dir /backup/sp/$(date +%Y%m%d)
Formato de Salida
Cada procedimiento se guarda en un archivo individual:
stored_procedures/
├── calcular_total.sql
├── procesar_pedido.sql
├── actualizar_inventario.sql
└── obtener_datos_FUNC.sql (funciones tienen sufijo _FUNC)
Ejemplo de contenido:
-- ============================================
-- PROCEDURE: calcular_total
-- Base de datos: mydb
-- ============================================
DROP PROCEDURE IF EXISTS `calcular_total`;
DELIMITER $$
CREATE PROCEDURE `calcular_total`(IN order_id INT)
BEGIN
-- Código del procedimiento
END$$
DELIMITER ;
Compatibilidad
- MemSQL / SingleStore
- MySQL 5.7+
- MySQL 8.0+
- MariaDB 10.x
Requisitos
- Python 3.7+
- mysql-connector-python
- python-dotenv
Desarrollo
# Clonar repositorio
git clone https://github.com/eherrera/mysql-sp-extractor.git
cd mysql-sp-extractor
# Instalar en modo desarrollo
pip install -e ".[dev]"
# Ejecutar tests
pytest
# Formatear código
black .
Licencia
MIT License - Ver archivo LICENSE para más detalles
Contribuir
¡Las contribuciones son bienvenidas! Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Soporte
⭐ Si este proyecto te fue útil, considera darle una estrella en GitHub!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mysql_sp_extractor-0.1.0.tar.gz.
File metadata
- Download URL: mysql_sp_extractor-0.1.0.tar.gz
- Upload date:
- Size: 9.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e6c2d6336cefac8e082b07d046c53a59d3e609a111bad33b84ec157f501e4cf
|
|
| MD5 |
0df7353710d8f164f07626c671b486aa
|
|
| BLAKE2b-256 |
82d32d0b70a1769eed3c4278b6b414b83d4dd6fcdffa74f6cd8724b60b814ae7
|
File details
Details for the file mysql_sp_extractor-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mysql_sp_extractor-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee74422260965048519f58c31b844caab23c7ec3e63d871cb55cdfa7739f76d9
|
|
| MD5 |
e4c640d6aec71d44204e1dfbe28e5dfd
|
|
| BLAKE2b-256 |
f630d6135a3b7b0d35707ca6c5f7cd855fde9d3390278199c1ddad378887618a
|