martes, 7 de abril de 2020

Validar la existencia de un archivo o carpeta en SQL SERVER

Buenas tardes, y feliz cuarentena queridos lectores, esta ocasión les mostraré como validar la existencia de algún archivo o carpeta en SQL SERVER. Para eso haremos uso del comando: xp_fileexist.

El uso de este comando no viene en la documentación oficial de SQL SERVER, pero aquí les daremos algunos ejemplos de su uso. Básicamente lleva tres partes. La primera parte es el comando, la segunda es el nombre del archivo a buscar y la tercera parte es la variable donde guardaremos el resultado. Vamos a realizar un pequeño ejemplo:



exec master.dbo.xp_fileexist 'C:\BD\prueba.txt'

En la sentencia anterior estamos validando la existencia del archivo prueba.txt en la carpeta C:\BD. El archivo si existe, por lo cual el resultado sería el siguiente:


Como vemos, el archivo existe, por eso el campo FileExists esta en 1, File is a directory esta en 0, porque no es un directorio, y el tercer campo nos dice que el directorio principal del archivo existe, de esta manera validamos la existencia de un archivo, sin embargo, esto no sirve de mucho si no pudiesemos crear condicionantes. Para lo cual utilizaremos una variable y ademas otro parámetro al comando. Veamos la siguiente sentencia.

declare @existe int
exec master.dbo.xp_fileexist 'C:\BD\prueba.txt', @existe OUT
print @existe
if @existe = 0
begin
print 'El archivo no existe'
end
else
begin
print 'El archivo existe'
end

En este script, vemos el uso de una variable tipo entero llamada @existe, donde guardaremos el resultado, si existe será 1, si no existe será 0, y con ese resultado haremos una validación que en este caso será mostrar un mensaje si existe o si no existe. El resultado en este caso sería el siguiente:


En caso contrario mostrará "El archivo no existe", podríamos crear incluso una función que nos haga más dinámico el proceso. Veamos el siguiente script:

create FUNCTION dbo.fn_FileExists(@path varchar(512))
RETURNS BIT
AS
BEGIN
    DECLARE @result INT
    EXEC master.dbo.xp_fileexist @path, @result OUTPUT
    RETURN @result
END;
GO


declare @existe int
declare @arc varchar(max)
set @arc = 'C:\BD\prueba.txt'
select @existe = dbo.fn_FileExists (@arc)
if @existe = 0
begin
print 'El archivo no existe'
end
else
begin
print 'El archivo existe'
end

Como ven, primero creamos una función con un return de la variable @result, posteriormente mandamos llamar esa función y guardamos el resultado en la variable  @existe y hacemos la validación. Esta función nos dará un mayor dinamismo en la sentencia xp_fileexist, de manera que no sea estático y sea más útil.

Hasta aquí el post de hoy, sigan encerrados en sus casas hasta nuevo aviso. Espero les haya gustado el post, compartan, comenten y recuerden preguntar cualquier duda, trataré de responderlas. Den clic a algún anuncio que vean en la página, eso me ayudaría mucho.

Saludos

No hay comentarios.:

Publicar un comentario

Roles en SQL SERVER

Buenas tardes queridos lectores, ya poco a poco va pasando la cuarentena y empiezan a abrir todo, el día de hoy, les traigo el post de los ...