Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Azcopy从SQL中移动或删除特定文件_Sql Server_Azure Blob Storage_Azcopy - Fatal编程技术网

Sql server Azcopy从SQL中移动或删除特定文件

Sql server Azcopy从SQL中移动或删除特定文件,sql-server,azure-blob-storage,azcopy,Sql Server,Azure Blob Storage,Azcopy,我需要将文件从一个blob移动到另一个blob。不抄袭。我需要搬家;这意味着当我从A移动到B时,文件从A移动到B,而A中没有任何内容。这是非常基本的,但在Azure Blob中是不可能的。如果可能的话,请告诉我。我使用的是SQL Server上的AzcopyVersion 10.3.2 因此,我需要将文件从A复制到B,然后从A中删除文件。有两个问题 1) 我只希望某些文件从A转到B DECLARE @Program varchar(200) = 'C:\azcopy.exe' DECLARE @

我需要将文件从一个blob移动到另一个blob。不抄袭。我需要搬家;这意味着当我从A移动到B时,文件从A移动到B,而A中没有任何内容。这是非常基本的,但在Azure Blob中是不可能的。如果可能的话,请告诉我。我使用的是SQL Server上的AzcopyVersion 10.3.2

因此,我需要将文件从A复制到B,然后从A中删除文件。有两个问题

1) 我只希望某些文件从A转到B

DECLARE @Program varchar(200) = 'C:\azcopy.exe'
DECLARE @Source varchar(max) = '"https://myblob.blob.core.windows.net/test/myfolder/*?SAS"'
DECLARE @Destination varchar(max) = '"https://myblob.blob.core.windows.net/test/archive?SAS"'

DECLARE @Cmd varchar(5000)
SELECT @Cmd = @Program +' cp  '+ @Source +' '+ @Destination + ' --recursive'
PRINT @cmd

EXECUTE master..xp_cmdshell @Cmd 
因此,当我键入
myfolder/*
时,它将接收所有文件。当我尝试
myfolder/*.pdf
时,它会说
无法分析用户输入,原因是出现错误:无法在URL的路径部分中使用通配符,尾部“/*”除外。如果希望在URL中使用*,请手动将其编码为%2A

当我尝试
myfolder/%2A.pdf
myfolder/%2pdf
时,它仍然会给出错误

信息:无法创建一个或多个目标容器。如果容器已经存在,您的传输仍可能成功

但是目标文件夹已经存在。在日志文件中写着

响应状态:403此请求无权执行此操作


对于azcopy版本10.3.2:

1.复制特定文件,如仅复制.pdf文件:您应该将
--include pattern“*.pdf”
添加到命令中。还要记住,对于@Source变量,删除通配符
*
,因此@Source应该是
”https://myblob.blob.core.windows.net/test/myfolder?SAS“”

完成的命令如下所示(请将其更改为符合sql cmd):

2.对于删除特定blob,如仅删除.pdf文件,还应将
--include pattern“*.pdf”
添加到
azcopy rm
命令中


而且,azcopy中没有移动命令,您应该先复制它=>然后删除它。您可以通过上述两个命令来实现这一点。

通过
”https://myblob.blob.core.windows.net/test/myfolder/*?SAS“
您是指名称以
结尾的文件吗?SAS
?或者您指的是一个实际称为
*?SAS
?的文件夹?@Larnu SAS表示共享访问签名。SAS只表示将作为共享访问签名的字符串。谢谢您的帮助。
azcopy cp "https://xx.blob.core.windows.net/test1/folder1?sas" "https://xx.blob.core.windows.net/test1/archive1?sas" --include-pattern "*.pdf" --recursive=true