Deux nouvelles procédures stockées introduites dans SQL Server 2019 sont sys.xp_copy_file
et sys.xp_copy_files
, qui vous permettent de copier des fichiers.
Avant SQL Server 2019, vous deviez utiliser xp_cmdshell
, qui génère un shell de commande Windows et transmet une chaîne pour l'exécution. Les nouvelles procédures stockées introduites dans SQL Server 2019 vous permettent de copier des fichiers sans compter sur xp_cmdshell
.
Exemple 1 – Copier 1 fichier
Vous pouvez utiliser sys.xp_copy_file
pour copier un seul fichier. L'utilisation de cette procédure stockée vous permet également de nommer le nouveau fichier.
Exemple sous Linux :
EXEC master.sys.xp_copy_file '/var/opt/mssql/data/samples/albums.csv', '/var/opt/mssql/data/samples/albums2.csv';
J'ai réussi à exécuter ce code sur mon Mac, qui utilise SQL Server 2019 sous Linux.
Pour copier des fichiers sur un système Windows, vous devez utiliser la convention de chemin Windows.
Exemple sous Windows :
EXEC master.sys.xp_copy_file 'D:\mssql\data\samples\albums.csv', 'D:\mssql\data\samples\albums2.csv';
Exemple 2 – Copier plusieurs fichiers
Vous pouvez utiliser sys.xp_copy_files
pour copier plusieurs fichiers.
Exemple sous Linux :
EXEC master.sys.xp_copy_files '/var/opt/mssql/data/samples/albums*.csv', '/var/opt/mssql/data/samples/final';
Ici, je suis dans le même dossier que l'exemple précédent. Dans ce cas, j'ai copié tous les fichiers commençant par albums
et terminez par .csv
. J'utilise l'astérisque (*
) caractère générique pour sélectionner les fichiers qui peuvent inclure d'autres caractères après les albums
partie.
Cet exemple copie les fichiers dans /var/opt/mssql/data/samples/final
répertoire.
Exemple sous Windows :
EXEC master.sys.xp_copy_file 'D:\mssql\data\samples\albums*.csv', 'D:\mssql\data\samples\final';
Suppression de fichiers
SQL Server 2019 a également introduit les sys.xp_delete_files
procédure stockée, qui vous permet de supprimer des fichiers. Voir Comment supprimer des fichiers dans SQL Server 2019 pour des exemples de suppression des fichiers créés dans cet article.