【发布时间】:2020-10-14 18:07:13
【问题描述】:
我正在尝试使用 Azure 数据工厂中的 Get Metadata 活动来获取 blob 文件名并将它们复制到 Azure SQL 数据库表。 我遵循本教程:https://www.mssqltips.com/sqlservertip/6246/azure-data-factory-get-metadata-example/
这是我的管道,复制数据 > 源是我的 Blob 存储中的 Blob 文件的源目标。我需要将我的源文件指定为二进制文件,因为它们是 *.jpeg 文件。
对于我的复制数据 > Sink,它是 Azure SQL 数据库,我启用了“自动创建表”选项
在我的接收器数据集配置中,我必须选择一个表,因为如果我不在我的 SQL 数据库中选择表,验证将不会通过,即使该表与我想要的 blob 文件名完全不相关得到。
问题 1:我是否应该先在 SQL DB 中创建一个新表,以使列与我要提取的 blob 文件名匹配?
然后,我尝试验证管道并收到此错误。
Copy_Data_1
Sink must be binary when source is binary dataset.
问题 2:如何解决此错误?我必须将源的文件类型选择为二进制,因为这是创建源数据集时的步骤之一。因此,当我选择作为 Azure SQL 表的接收器数据集时,我不必选择数据集的类型,因此它似乎不匹配。
非常感谢您。
新管道的新截图,我现在可以在 json 输出文件中获取文件名的 itemName。
现在我在 Get_File_Name2 活动之后添加 Copy Data 活动并将它们连接在一起以尝试将 json 输出文件作为源数据集。
但是,在将类型指定为 json 之前,我需要先选择源数据集位置。但是,据我了解,这些输出 json 文件是 Get_File_Name2 活动的输出,它们尚未存储在 Blob 存储中。如何使复制数据活动读取这些 json 输出文件作为源数据集?
2020 年 10 月 14 日更新 这是我的新活动存储过程,我按照建议添加了参数,但是我将名称更改为 JsonData,因为我的存储过程需要此参数。
这是我的存储过程。
我在存储过程中收到此错误:
{
"errorCode": "2402",
"message": "Execution fail against sql server. Sql error number: 13609. Error Message: JSON text is not properly formatted. Unexpected character 'S' is found at position 0.",
"failureType": "UserError",
"target": "Stored procedure1",
"details": []
}
但是当我检查输入时,它似乎已经成功读取了 json 字符串 itemName。
但是,当我检查输出时,它不存在。
【问题讨论】:
-
源文件是 *.jpeg(image) 文件而不是像 csv 这样的数据文件,二进制格式无法加载到 Azure SQL 数据库。不支持。我们无法帮你解决!
-
你好@Leon Yue,你能再检查一下我的步骤吗?我没有尝试将 jpeg 文件本身加载到 SQL 表中,这当然没有意义,因为我们不保留图像文件 i。关系数据库。我试图获取 jpeg 文件的文件名并将它们放入 SQL 表中。这就是我尝试使用 Get Metadata 的原因,这是正确的做法吗?
-
是的。但请不要在复制活动中使用二进制作为源。您的整个工作流程可能是:获取元数据(获取所有 .jpeg 文件名)--> foreach(循环文件名)--> if 条件(我不知道它用于什么)-->true active(加载到Azure SQL)。
-
自动创建表不适用于文件名!这取决于文件数据。您需要创建一个表来接收这些文件名。
-
您好@Leon Yue 非常感谢您的建议。我也找到了类似的解决方案,所以我修改了我的管道,如下所示: Get Metadata 1 with dataset pointing to blob storage on blob files, here I add file list = Child items 然后通过设置 @activity('Get_File_Name1') 连接到 ForEach 循环.output.childItems 和 Get Metadata 内部的活动也指向具有 FileName 值作为 @item().name 的 blob 存储。运行此管道后,似乎在 json 输出文件中越来越接近,我得到了文件名的 itemName 值。请看上面的截图。
标签: stored-procedures azure-sql-database metadata azure-data-factory copydataset