sql >> Databasteknik >  >> RDS >> Sqlserver

Nytt sätt att kopiera filer i SQL Server 2019

Två nya lagrade procedurer introducerade i SQL Server 2019 är sys.xp_copy_file och sys.xp_copy_files , som gör att du kan kopiera filer.

Före SQL Server 2019 skulle du behöva använda xp_cmdshell , som skapar ett Windows-kommandoskal och skickar in en sträng för exekvering. De nya lagrade procedurerna som introduceras i SQL Server 2019 låter dig kopiera filer utan att förlita dig på xp_cmdshell .

Exempel 1 – Kopiera 1 fil

Du kan använda sys.xp_copy_file för att kopiera en enda fil. Genom att använda denna lagrade procedur kan du även namnge den nya filen.

Exempel på Linux:

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

Jag körde den här koden framgångsrikt på min Mac, som använder SQL Server 2019 på Linux.

För att kopiera filer på ett Windows-system måste du använda Windows-sökvägskonventionen.

Exempel på Windows:

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

Exempel 2 – Kopiera flera filer

Du kan använda sys.xp_copy_files för att kopiera flera filer.

Exempel på Linux:

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

Här är jag i samma mapp som föregående exempel. I det här fallet kopierade jag alla filer som börjar med albums och avsluta med .csv . Jag använder asterisken (* ) jokertecken för att välja filer som kan innehålla andra tecken efter albums del.

Det här exemplet kopierar filerna till /var/opt/mssql/data/samples/final katalog.

Exempel på Windows:

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

Ta bort filer

SQL Server 2019 introducerade också sys.xp_delete_files lagrad procedur, som gör att du kan radera filer. Se Hur man tar bort filer i SQL Server 2019 för exempel på hur man tar bort filerna som skapats i den här artikeln.


  1. Hur man får den sista dagen i månaden i T-SQL

  2. MySQL LÄGG TILL KOLUMN

  3. oracle-fråga sekventiell summering per rad

  4. Vilket är det enklaste sättet att fylla på tomma datum i SQL-resultat (antingen i mysql- eller perl-änden)?