sql >> Base de Datos >  >> RDS >> Sqlserver

Nueva forma de copiar archivos en SQL Server 2019

Dos nuevos procedimientos almacenados introducidos en SQL Server 2019 son sys.xp_copy_file y sys.xp_copy_files , que le permiten copiar archivos.

Antes de SQL Server 2019, necesitaría usar xp_cmdshell , que genera un shell de comandos de Windows y pasa una cadena para su ejecución. Los nuevos procedimientos almacenados introducidos en SQL Server 2019 le permiten copiar archivos sin depender de xp_cmdshell .

Ejemplo 1:Copiar 1 archivo

Puede usar sys.xp_copy_file para copiar un solo archivo. El uso de este procedimiento almacenado le permite también nombrar el nuevo archivo.

Ejemplo en Linux:

EXEC master.sys.xp_copy_file
'/var/opt/mssql/data/samples/albums.csv',
'/var/opt/mssql/data/samples/albums2.csv';

Ejecuté con éxito este código en mi Mac, que usa SQL Server 2019 en Linux.

Para copiar archivos en un sistema Windows, debe usar la convención de ruta de acceso de Windows.

Ejemplo en Windows:

EXEC master.sys.xp_copy_file
'D:\mssql\data\samples\albums.csv',
'D:\mssql\data\samples\albums2.csv';

Ejemplo 2:copiar varios archivos

Puede usar sys.xp_copy_files para copiar varios archivos.

Ejemplo en Linux:

EXEC master.sys.xp_copy_files
'/var/opt/mssql/data/samples/albums*.csv',
'/var/opt/mssql/data/samples/final';

Aquí estoy en la misma carpeta que el ejemplo anterior. En este caso, copié todos los archivos que comienzan con albums y terminar con .csv . Uso el asterisco (* ) comodín para seleccionar archivos que pueden incluir otros caracteres después de albums parte.

Este ejemplo copia los archivos a /var/opt/mssql/data/samples/final directorio.

Ejemplo en Windows:

EXEC master.sys.xp_copy_file
'D:\mssql\data\samples\albums*.csv',
'D:\mssql\data\samples\final';

Eliminación de archivos

SQL Server 2019 también introdujo los sys.xp_delete_files procedimiento almacenado, que le permite eliminar archivos. Consulte Cómo eliminar archivos en SQL Server 2019 para ver ejemplos de cómo eliminar los archivos creados en este artículo.