Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Nouvelle façon de copier des fichiers dans SQL Server 2019

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.