sql >> Database >  >> RDS >> Sqlserver

Hoe bestanden te verwijderen in SQL Server 2019

In SQL Server 2019 kunt u de sys.xp_delete_files opgeslagen procedure om een ​​bestand op het bestandssysteem te verwijderen.

Deze opgeslagen procedure is geïntroduceerd in SQL Server 2019 en kan worden gebruikt in combinatie met sys.xp_copy_file en sys.xp_copy_files (beide ook geïntroduceerd in SQL Server 2019), waarmee u bestanden kunt kopiëren.

Vóór SQL Server 2019 zou u xp_cmdshell . moeten gebruiken , die een Windows-opdrachtshell voortbrengt en een tekenreeks doorgeeft voor uitvoering. Met de nieuwe opgeslagen procedures die in SQL Server 2019 zijn geïntroduceerd, kunt u bestanden kopiëren en verwijderen zonder afhankelijk te zijn van xp_cmdshell .

Voorbeeld 1 – Verwijder 1 bestand

Hier is een voorbeeld van het verwijderen van een enkel bestand.

Voorbeeld op Linux:

EXEC master.sys.xp_delete_files
'/var/opt/mssql/data/samples/albums2.csv';

Ik heb deze code uitgevoerd op mijn Mac, die SQL Server 2019 op Linux gebruikt. Dit heeft met succes een bestand verwijderd met de naam albums2.csv (volledig pad /var/opt/mssql/data/samples/albums2.csv ).

Om bestanden naar een Windows-systeem te kopiëren, moet u de Windows-padconventie gebruiken.

Voorbeeld op Windows:

EXEC master.sys.xp_delete_files
'D:\mssql\data\samples\albums2.csv';

Uiteraard hangt de exacte locatie af van uw situatie.

Voorbeeld 2 – Meerdere bestanden verwijderen

U kunt dezelfde procedure gebruiken om meerdere bestanden te verwijderen.

Voorbeeld op Linux:

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

In dit geval heb ik alle bestanden in de /var/opt/mssql/data/samples/final directory die begint met albums en eindigen met .csv . Ik gebruik de asterisk (* ) jokerteken om bestanden te selecteren die mogelijk andere tekens bevatten na de albums onderdeel.

Voorbeeld op Windows:

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

Voorbeeld 3 – Mappen verwijderen

U kunt dezelfde procedure gebruiken om de hele map te verwijderen.

Voorbeeld op Linux:

EXEC master.sys.xp_delete_files
'/var/opt/mssql/data/samples/final/';

In dit geval heb ik de /var/opt/mssql/data/samples/final verwijderd directory helemaal.

Voorbeeld op Windows:

EXEC master.sys.xp_delete_files
'D:\mssql\data\samples\final\';

  1. Dynamische SQL-uitvoering in SQL Server

  2. 3 manieren om te detecteren of een string overeenkomt met een reguliere expressie in MySQL

  3. Een kolom neerzetten met een beperking in SQL Server

  4. Door komma's gescheiden waarden in Oracle