我的工作负载具有高度可变的架构。我已经成功地将它以 CDM 格式加载到 ADLS 中,并且能够从我的数据流中访问数据并写回 CSV。
尝试写入 SQL 数据库时,我收到以下错误:
我考虑过使用集成数据集,但这需要我对不适合我的用例的表名进行硬编码。
数据流是否支持使用 SQL 数据库作为接收器?或者我需要使用管道吗?
数据流支持使用SQL数据库作为sink 您收到的错误消息表明接收器转换无法确定目标表的模式。 但是请参考以下文档 https://learn.microsoft.com/en-us/azure/data-factory/connector-azure-sql-database?tabs=data-factory#using-always-encrypted
我已尝试解决此问题,使用接收器转换中的“映射”选项卡将数据流中的列映射到目标表中的列。 这将允许接收器转换确定目标表的架构并将数据写入其中。 EMP 表有一个加密列。
工资一栏是加密的
您可以看到来自 ADLS(源)和 SQL 数据库的数据流图像(汇)
考虑您的来源的来源设置:
同样从上图中你甚至可以看到允许模式漂移复选框也被启用。 在源端检查投影选项卡下的映射。
在水槽设置中考虑:
在接收器映射中,您可以禁用自动映射并将源映射到接收器映射。
使用数据预览选项检查映射是否正确。
现在创建新管道,将数据流添加到管道中并触发/调试管道以检查管道结果。
当我尝试在加密列时使用数据流时,例如在我的例子中,我将 SALARY 列加密为 Deterministic 并在尝试将数据移动到 SQL 数据库时注意到。我注意到数据类型不匹配,所以根据要求我更改了 SALARY 列的数据类型。
您仍然想维护加密列,您可以按照以下步骤操作:
解密源数据库中现有的加密列值。 从源数据库导出解密的列值。
从源数据库中导出解密的列值。
为加密创建具有所需数据类型的相同表
目标数据库中的列。
将解密的列值导入目标中的新表
数据库。
使用加密法对新表中的列值进行加密
您要在目标数据库中使用的函数。
你还有问题,你可以尝试使用带有复制活动的管道将数据写入 SQL 数据库。 资料来源:
水槽:
使用导入模式选项或创建新映射。
发布您的更改并触发/调试您的管道以将数据移动到 SQL 数据库。