Saltar al contenido
Codifíca.me | Desarrollo web | Programación

Crear script de carga de datos con batch

5 diciembre, 2016

En muchas ocasiones tenemos un documento excel, csv, etc… repleto de información que nos interesa maquetar en inserts para cargas masivas de datos. En este documento se muestra como leer, maquetar y generar un txt con las sentencias de insercción usando Batch con los datos en un csv limitado con ;’.
CSV

Supongamos que tenemos un csv con dos columnas y con cabecera. Las dos columnas son:

  • numero: Con numeros
  • texto: Con texto

Ejemplo:

numero;texto
001;hola
034;wikicode
023;adios
076;carga
032;masiva

Insert

El formato del insert será el siguiente:

INSERT INTO mi_tabla (contador, numero, texto) VALUES (x,y,z);

Donde x,y,z son:

y y z: Se alimentarán de las columnas del csv
x: Es un contador que debemos incrementar nosotros (no la base de datos)

Carga masiva batch

Este es el fichero batch, para que funcione debe existir un archivo info.csv en la misma carpeta donde se ejecuta.

@echo off
::Elimina el script anterior
del script.txt
CLS
set /a contador=0
set /a porcentaje=0
set /a total=0
 
::Primera cabecera
ECHO Preparando archivo...
 
::Recorre el csv llamando a countCSV para cada linea ignorando la cabecera
 
for /f "skip=1 tokens=1-2 delims=;" %%a in (info.csv) do call :countCSV "%%a" "%%b"
 
::Recorre el csv llamando a WriteCSV para cada linea ignorando la cabecera
 
for /f "skip=1 tokens=1-2 delims=;" %%a in (info.csv) do call :WriteCVS "%%a" "%%b"
 
::Manda al final santandose el WriteCVS
GOTO Done
 
::Funcion que maqueta y guarda el insert
:WriteCVS
call:incrContador
ECHO insert into mi_tabla (contador, numero, texto) values (%contador%,%~1,'%~2');>>script.txt
set /a porcentaje=(%contador%*100)/%total%
cls
ECHO Creando... %porcentaje%%%
GOTO EOF
 
::Funcion que incrementa
:incrContador
set /a contador+=1
GOTO EOF
 
::Funcion que cuenta para %
:countCSV
set /a total=%total%+1
GOTO EOF
 
::Al terminar añade un commit
:Done
ECHO commit;>>script.txt
PAUSE
:EOF

codigo programacion SEO web