无法将数据从 Snowflake 复制到 Azure Blob
Posted
技术标签:
【中文标题】无法将数据从 Snowflake 复制到 Azure Blob【英文标题】:Cannot copy data from Snowflake into Azure Blob 【发布时间】:2021-03-28 10:41:20 【问题描述】:我正在尝试使用 Azure 数据工厂将数据从 Snowflake 复制到 Azure Blob。
我使用的角色对表具有选择权限,并且使用 Snowflake 控制台查询数据没有问题。
我还可以使用相同的 SAS 令牌从其他来源(在 Azure 中)复制到目标 blob。
这是我的查询,由 Azure 数据工厂生成(省略了细节)
COPY INTO 'azure://****.blob.core.windows.net/snowflake-stage/********-****-****-****-************/SnowflakeExportCopyCommand/'
FROM (select * from MYSCHEMA.MYTABLE)
CREDENTIALS = (AZURE_SAS_TOKEN = '****')
FILE_FORMAT = (type = CSV COMPRESSION = GZIP RECORD_DELIMITER = '
' FIELD_OPTIONALLY_ENCLOSED_BY = '"' ESCAPE = '\\' NULL_IF = '')
HEADER = TRUE
SINGLE = FALSE
OVERWRITE = TRUE
MAX_FILE_SIZE = 268435456
这是我得到的错误:
ErrorCode=UserErrorOdbcOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=ERROR [42501] 无法访问远程文件:访问被拒绝。
请检查您的凭据,Source=Microsoft.DataTransfer.Runtime.GenericOdbcConnectors,''Type=System.Data.Odbc.OdbcException,Message=ERROR [42501] 无法访问远程文件:访问被拒绝。请检查您的 凭据,来源=雪花,'
是否需要更多 Snowflake 权限才能进行此类复制?或者这可能是 Azure 容器写入权限的问题?
【问题讨论】:
您的 URL 中的 snowflake-stage 是舞台名称还是容器名称? 你确定你使用的令牌对容器有写权限吗? @AbhiReddy 它是容器名称。 @MikeWalton 是的。这似乎与对容器的访问有关,而不是雪花方面的问题。我已经在答案中标记了“解决方案”。 【参考方案1】:此问题的“解决方案”表明 blob 本身的权限可能存在错误。
将容器权限切换为公共,然后再次切换回私有可以解决此问题。
【讨论】:
以上是关于无法将数据从 Snowflake 复制到 Azure Blob的主要内容,如果未能解决你的问题,请参考以下文章
从 AWS S3 复制到 <Snowflake table>
将数据批量加载到使用 BCP 从 SQL Server 导出的 Snowflake 时出现 UTF-8 错误
雪花“PARTITION BY”复制选项,包括输出数据集中的分区列