Convierte archivos Excel en scripts SQL listos para ejecutar en SQL Server.
generar-script-xlsx es una herramienta de linea de comandos que lee archivos Excel y genera scripts SQL (para SQL Server) con transacciones INSERT y UPDATE.
Imagina que tienes un archivo Excel como este:
| ACCION | NUMERO_INSTITUCION | TRANSACCION_EXTERNA | MONTO |
|---|---|---|---|
| INSERT | 001 | 12345 | 100.50 |
| UPDATE | 001 | 12345 | 200.00 |
La herramienta detectara automaticamente:
- INSERT: Generara un script para insertar todos los valores de la fila.
- UPDATE: Generara un script para actualizar solo las celdas que tengan estilo (negrita o color de fondo), usando las columnas clave en el
WHERE.
El resultado sera algo como:
BEGIN TRAN TRAN_NombreHoja
BEGIN TRY
INSERT INTO NombreHoja (NUMERO_INSTITUCION, TRANSACCION_EXTERNA, MONTO) VALUES ('001', '12345', '100.50');
UPDATE NombreHoja SET MONTO = '200.00' WHERE NUMERO_INSTITUCION = '001' AND TRANSACCION_EXTERNA = '12345';
COMMIT TRAN TRAN_NombreHoja;
PRINT 'PROCESO EJECUTADO CORRECTAMENTE';
END TRY
BEGIN CATCH
SELECT 'LINEA ERROR - ' + CAST(ERROR_LINE() AS VARCHAR(5)) + ': ' + ERROR_MESSAGE();
ROLLBACK TRAN TRAN_NombreHoja;
PRINT 'OCURRIO UN ERROR EN EL PROCESO';
END CATCH- Lectura de multiples hojas: Procesa todas las hojas del archivo Excel.
- Deteccion automatica de acciones: Identifica columnas con valores
INSERToUPDATE. - Estilos como indicadores: Solo actualiza celdas que tengan negrita o color de fondo.
- Llaves configurables: Define que columnas se usaran para el
WHEREen losUPDATE. - Modo interactivo: Si detecta
UPDATEs, te pregunta interactivamente que columnas usar como llaves. - Soporte por hoja: Cada hoja puede tener su propia configuracion de llaves.
- Manejo de valores especiales: Detecta
NULL,GETDATE()y fechas automaticamente. - Esquema de transacciones: Incluye
BEGIN TRAN,TRY/CATCHpara ejecucion segura.
Necesitas tener Node.js instalado en tu computadora.
Como verificar si lo tienes:
node --versionSi no lo tienes, instalalo:
- Windows: Descarga el instalador desde nodejs.org
- Mac:
brew install node - Linux:
sudo apt install nodejs npm(Ubuntu/Debian)
Se recomienda usar Node.js 18 o superior.
Normalmente viene incluido con Node.js. Verifica con:
npm --versionTienes varias opciones:
Esta opcion instala la herramienta para que puedas usarla desde cualquier carpeta.
npm install -g generar-script-xlsxSi clonaste o descargaste el codigo fuente:
# Entra a la carpeta del proyecto
cd ruta/al/proyecto
# Instala las dependencias
npm install
# Vincula como comando global
npm linkTambien puedes ejecutarlo sin instalar:
npx generar-script-xlsx "archivo.xlsx"generar-script-xlsx <archivo_excel> [opciones]# Supongamos que tienes un archivo llamado "datos.xlsx" en tu escritorio
generar-script-xlsx "C:\Users\TuUsuario\Desktop\datos.xlsx"La herramienta:
- Leera el archivo
datos.xlsx - Procesara cada hoja
- Generara archivos
.sqlen la misma carpeta donde esta el archivo Excel - Los archivos se llamaran igual que las hojas (ej:
Hoja1.sql,Hoja2.sql)
Define las columnas que se usaran en la clausula WHERE para los UPDATE.
Formatos:
generar-script-xlsx archivo.xlsx -k "COLUMNA1,COLUMNA2"Ejemplo:
generar-script-xlsx archivo.xlsx -k "ID_CLIENTE,FECHA"Usa el formato NombreHoja:Columnas:
generar-script-xlsx archivo.xlsx -k "Hoja1:COL1,COL2;Hoja2:COL3"Ejemplo completo:
generar-script-xlsx archivo.xlsx -k "Clientes:ID_CLIENTE;Ventas:ID_VENTA,FECHA;Transacciones:ID"| Hoja | Llaves usadas en WHERE |
|---|---|
| Clientes | ID_CLIENTE |
| Ventas | ID_VENTA, FECHA |
| Transacciones | ID |
Si una hoja no esta definida, usara las llaves por defecto:
generar-script-xlsx archivo.xlsx -k "HojaEspecial:ID_UNICO;COL_DEFAULT1,COL_DEFAULT2"Muestra la version de la herramienta.
generar-script-xlsx --versionMuestra la ayuda con todas las opciones disponibles.
generar-script-xlsx --helpUna de las caracteristicas mas utiles es el modo interactivo.
Cuando el script detecta filas con UPDATE y no le has proporcionado las llaves mediante la opcion -k.
- La herramienta detecta que hay
UPDATEs en una hoja. - Te muestra la lista de columnas disponibles numeradas.
- Puedes seleccionar las columnas usando el checkbox interactivo.
- Presiona
Espaciopara marcar/desmarcar columnas. - Presiona
Enterpara confirmar tu seleccion.
Processing sheet: Transacciones
-> Stats: 150 rows (approx).
-> Action Column: 'ACCION' (Index 0)
[!] UPDATE operations detected in 'Transacciones'
? Select the Key Columns for the WHERE clause: (Press <space> to select, <Enter> to confirm)
- NUMERO_INSTITUCION
X TRANSACCION_EXTERNA
- MONTO
- FECHA
- ESTADO
En este ejemplo:
NUMERO_INSTITUCIONesta desmarcadoTRANSACCION_EXTERNAesta seleccionado (marcado conX)
Presiona Enter para confirmar.
generar-script-xlsx "C:\Users\MiUsuario\Desktop\actualizacion.xlsx"Resultado: Se generara actualizacion.sql en el escritorio.
generar-script-xlsx "datos.xlsx" -k "ID_CLIENTE,FECHA_OPERACION"Todas las hojas usaran ID_CLIENTE y FECHA_OPERACION en sus WHERE.
generar-script-xlsx "reportes.xlsx" -k "Clientes:ID_CLIENTE;Productos:CODIGO_PRODUCTO;Ventas:ID_VENTA,FECHA"generar-script-xlsx "C:\Users\Mi Usuario\Documentos\Mi Carpeta\datos.xlsx"O usando comillas simples:
generar-script-xlsx 'C:\Users\Mi Usuario\Documentos\Mi Carpeta\datos.xlsx'| Columna A (ACCION) | Columna B | Columna C | ... |
|---|---|---|---|
| INSERT o UPDATE | valor1 | valor2 | ... |
-
Columna de accion: La primera columna (A) debe contener
INSERToUPDATE(no distingue mayusculas/minusculas). -
Encabezados: La primera fila debe contener los nombres de las columnas de tu tabla en SQL.
-
Valores especiales:
- Escribe
NULLpara valores nulos - Escribe
GETDATE()para fechas actuales del servidor
- Escribe
| ACCION | ID_PRODUCTO | NOMBRE | PRECIO | FECHA_CREACION |
|---|---|---|---|---|
| INSERT | 1001 | Producto A | 25.50 | GETDATE() |
| UPDATE | 1001 | Producto A | 29.99 | |
| INSERT | 1002 | Producto B | 15.00 | NULL |
Nota: En el UPDATE, solo
PRECIOse actualizara si la celda tiene estilo (negrita o color).ID_PRODUCTOyNOMBREse usan en el WHERE pero no se actualizan.
La herramienta detecta cambios basandose en el estilo de la celda:
| Estilo detectado | Comportamiento |
|---|---|
| Negrita | La celda se incluira en el SET del UPDATE |
| Color fondo | La celda se incluira en el SET del UPDATE |
- Abre tu archivo Excel
- Identifica las filas con
UPDATEen la columna de accion - Aplica negrita o color de fondo a las celdas que quieres que se actualicen
- Guarda el archivo
- Ejecuta la herramienta
Si ves este error despues de instalar:
generar-script-xlsx : El termino 'generar-script-xlsx' no se reconoce...Solucion:
- Verifica que la instalacion termino correctamente
- Cierra y abre una nueva terminal
- O prueba con la ruta completa de npm:
npx generar-script-xlsx archivo.xlsx
Error: Input file not found at C:\ruta\archivo.xlsxSolucion:
- Verifica que la ruta este completa y correcta
- Verifica que el archivo realmente exista
- Usa comillas si la ruta tiene espacios
Posibles causas:
-
La columna de accion no se detecto correctamente
- Verifica que la primera columna se llame
ACCION,ACTION,TIPO,OPERACIONoMOVIMIENTO - O que el texto
INSERT/UPDATEeste en la primera columna
- Verifica que la primera columna se llame
-
Los valores no coinciden
- Verifica que el texto sea exactamente
INSERToUPDATE - No debe haber espacios extra (
INSERToUPDATE)
- Verifica que el texto sea exactamente
-
Hoja vacia
- Verifica que la hoja tenga filas con datos
Error: EACCES: permission denied, open 'archivo.sql'Solucion:
- Verifica que tengas permisos de escritura en la carpeta destino
- Intenta ejecutar la terminal como Administrador
- O guarda el archivo Excel en una carpeta diferente
Si las fechas se generan con formato incorrecto:
La herramienta convierte fechas de Excel al formato SQL: '2026-03-26 16:30:00'
Si necesitas un formato especifico, edita manualmente el archivo .sql generado despues.
Si deseas quitar la herramienta de tu sistema:
npm uninstall -g generar-script-xlsx- Node.js - Entorno de ejecucion
- ExcelJS - Lectura de archivos Excel
- Commander.js - CLI framework
- Inquirer.js - Preguntas interactivas
- Chalk - Colores en terminal
MIT License - Libre para usar, modificar y distribuir.
Las contribuciones son bienvenidas! Si encuentras un bug o tienes una mejora:
- Haz un fork del repositorio
- Crea una rama para tu feature:
git checkout -b mi-nueva-funcion - Haz commit de tus cambios:
git commit -m 'Agregar nueva funcion' - Haz push a la rama:
git push origin mi-nueva-funcion - Abre un Pull Request
Si tienes dudas o problemas:
- Revisa la seccion de Solucion de problemas
- Busca en los issues del repositorio
- Abre un nuevo issue si no encuentras la solucion
Gracias por usar generar-script-xlsx!