Hai thủ tục được lưu trữ mới được giới thiệu trong SQL Server 2019 là sys.xp_copy_file
và sys.xp_copy_files
, cho phép bạn sao chép tệp.
Trước SQL Server 2019, bạn cần sử dụng xp_cmdshell
, tạo ra một trình bao lệnh Windows và chuyển vào một chuỗi để thực thi. Các thủ tục được lưu trữ mới được giới thiệu trong SQL Server 2019 cho phép bạn sao chép tệp mà không cần dựa vào xp_cmdshell
.
Ví dụ 1 - Sao chép 1 tệp
Bạn có thể sử dụng sys.xp_copy_file
để sao chép một tệp duy nhất. Việc sử dụng quy trình được lưu trữ này cũng cho phép bạn đặt tên cho tệp mới.
Ví dụ trên Linux:
EXEC master.sys.xp_copy_file '/var/opt/mssql/data/samples/albums.csv', '/var/opt/mssql/data/samples/albums2.csv';
Tôi đã chạy thành công mã này trên máy Mac của mình, sử dụng SQL Server 2019 trên Linux.
Để sao chép tệp trên hệ thống Windows, bạn cần sử dụng quy ước đường dẫn Windows.
Ví dụ trên Windows:
EXEC master.sys.xp_copy_file 'D:\mssql\data\samples\albums.csv', 'D:\mssql\data\samples\albums2.csv';
Ví dụ 2 - Sao chép Nhiều tệp
Bạn có thể sử dụng sys.xp_copy_files
để sao chép nhiều tệp.
Ví dụ trên Linux:
EXEC master.sys.xp_copy_files '/var/opt/mssql/data/samples/albums*.csv', '/var/opt/mssql/data/samples/final';
Ở đây tôi đang ở trong cùng một thư mục với ví dụ trước. Trong trường hợp này, tôi đã sao chép tất cả các tệp bắt đầu bằng albums
và kết thúc bằng .csv
. Tôi sử dụng dấu hoa thị (*
) ký tự đại diện để chọn các tệp có thể bao gồm các ký tự khác sau albums
một phần.
Ví dụ này sao chép các tệp vào /var/opt/mssql/data/samples/final
thư mục.
Ví dụ trên Windows:
EXEC master.sys.xp_copy_file 'D:\mssql\data\samples\albums*.csv', 'D:\mssql\data\samples\final';
Xóa tệp
SQL Server 2019 cũng giới thiệu sys.xp_delete_files
thủ tục được lưu trữ, cho phép bạn xóa tệp. Xem Cách xóa tệp trong SQL Server 2019 để biết các ví dụ về cách xóa tệp được tạo trong bài viết này.