Skip to main content

Extract stored procedures from MySQL/SingleStore databases

Project description

MySQL Stored Procedure Extractor

PyPI version Python Versions License: MIT

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:

  1. Fork el proyecto
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

Soporte


⭐ Si este proyecto te fue útil, considera darle una estrella en GitHub!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mysql_sp_extractor-0.1.0.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mysql_sp_extractor-0.1.0-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

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

Hashes for mysql_sp_extractor-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2e6c2d6336cefac8e082b07d046c53a59d3e609a111bad33b84ec157f501e4cf
MD5 0df7353710d8f164f07626c671b486aa
BLAKE2b-256 82d32d0b70a1769eed3c4278b6b414b83d4dd6fcdffa74f6cd8724b60b814ae7

See more details on using hashes here.

File details

Details for the file mysql_sp_extractor-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mysql_sp_extractor-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ee74422260965048519f58c31b844caab23c7ec3e63d871cb55cdfa7739f76d9
MD5 e4c640d6aec71d44204e1dfbe28e5dfd
BLAKE2b-256 f630d6135a3b7b0d35707ca6c5f7cd855fde9d3390278199c1ddad378887618a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page