jueves, 12 de septiembre de 2019

Ejecutar script sql desde cmd

Bienvenidos a este blog, esta semana les quiero compartir otro ejemplo de archivos BAT para ejecutar una consulta a una base de datos SQL con la instrucción sqlcmd.

El comando sqlcmd es de Microsfot y nos funciona para ejecutar consultas desde un archivo esta es la definición que da Microsoft
La utilidad sqlcmd es una utilidad de la línea de comandos para la ejecución ad hoc e interactiva de instrucciones y scripts de Transact-SQL y para la automatización de tareas de scripting de Transact-SQL. Para usar sqlcmd interactivamente, o para compilar archivos de script que se ejecutan mediante sqlcmd, los usuarios deben estar familiarizados con Transact-SQL. La utilidad sqlcmd se usa normalmente de las formas siguientes:

Ejemplo:


Objetivo: Ejecutar un query a una base de datos para obtener las facturas timbradas a clientes y crear un archivo csv de salida y alojarlo en una carpeta

Código

Necesitamos 2 archivos

Uno que sea el archivo BAT en mi caso lo llame sqltimbrados.bat  y dentro las siguientes lineas

sqlcmd -i C:\CFDIxml\SAT3.3\UUID_QAD\sqljob.sql -o W:\einvoicemx\folios.csv
if errorlevel 1  

echo == An error occurred


la primera linea es para que llame el comando sqlcmd al archivo que contiene el query o consulta a sql y con el parametro -o le indicamos que deje la salida al archivo folios.csv en una unidad mapeada en la computadora así que no solo pueden dejar archivos en su propia computadora puede ser en alguna otra maquina en la que estén en red. 

Archivo 2 es donde esta la consulta a la base de datos el archivo lo llame sqljob.sql y contiene lo siguiente

SELECT FolioSAT, ',' ,
  (CONVERT(varchar(10),year(FechaComprobante))+'/'+ serie + folio) as factura
FROM [ASFacturaCloud].[dbo].[Comprobante] 
WHERE esprueba = 0 AND
( confirmacion IS NULL OR 
confirmacion = '' )
;
UPDATE [ASFacturaCloud].[dbo].[Comprobante] SET Confirmacion = 'EXPORTED-TO-QAD'
WHERE esprueba = 0 AND 
AND  ( confirmacion IS NULL OR 
confirmacion = '' ) 

;




En mi consulta esta dividido en 2 partes, la primera es el query para obtener los datos y en la segunda un update para marcar que registros leyó el query para no volverlo a tomar.

En el primer select obtengo 3 columnas, el folio del SAT, el folio de la factura como lo requiero que es concatenando o uniendo el Año de timbrado más "/" una diagonal , mas la serie, mas el folio y a ese campo le llamo Factura, el archivo de salida se ve así





Adicional a estos 2 archivos, configure una tarea programada para ejecutar el archivo bat de manera diaria, de esta forma tengo un proceso automático, que podría haberse realizado también con un store procedure en la base de datos y crear un Job en la Base de datos, pero como tengo SQL Server Express no tengo la función de Job, así que me parece una muy buena alternativa la que les mostré. 



Usos de este script, puede ser para generar respaldos de la base de datos, para enviar información a otro sistema mediante una red mapeada, generar consulta de información para reportes. 

Espero les sea de utilidad este post y nos compartan, nos leemos la próxima semana. 

No hay comentarios.:

Publicar un comentario

Entrada destacada

Como Programar HTML,Como crear página WEB, HTML para principiantes

Hola programadores Esta semana voy a escribir acerca de como programar con HTML (HyperText Markup Language) , el cual es un lenguaje ...