Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Nuovo modo per copiare i file in SQL Server 2019

Due nuove stored procedure introdotte in SQL Server 2019 sono sys.xp_copy_file e sys.xp_copy_files , che ti consentono di copiare file.

Prima di SQL Server 2019, dovresti usare xp_cmdshell , che genera una shell dei comandi di Windows e passa una stringa per l'esecuzione. Le nuove stored procedure introdotte in SQL Server 2019 consentono di copiare file senza fare affidamento su xp_cmdshell .

Esempio 1 – Copia 1 File

Puoi usare sys.xp_copy_file per copiare un singolo file. L'utilizzo di questa procedura memorizzata consente di assegnare un nome anche al nuovo file.

Esempio su Linux:

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

Ho eseguito con successo questo codice sul mio Mac, che utilizza SQL Server 2019 su Linux.

Per copiare file su un sistema Windows, devi utilizzare la convenzione del percorso di Windows.

Esempio su Windows:

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

Esempio 2 – Copia più file

Puoi usare sys.xp_copy_files per copiare più file.

Esempio su Linux:

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

Qui sono nella stessa cartella dell'esempio precedente. In questo caso, ho copiato tutti i file che iniziano con albums e termina con .csv . Uso l'asterisco (* ) jolly per selezionare i file che possono includere altri caratteri dopo gli albums parte.

Questo esempio copia i file in /var/opt/mssql/data/samples/final directory.

Esempio su Windows:

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

Eliminazione di file

SQL Server 2019 ha anche introdotto sys.xp_delete_files stored procedure, che consente di eliminare i file. Vedere Come eliminare i file in SQL Server 2019 per esempi di eliminazione dei file creati in questo articolo.