首页 > 解决方案 > Azure 数据工厂 CopyData 活动问题,错误代码 2200

问题描述

我即将使用 Azure 数据工厂安排数据库插入。

我有 1 个复制数据和 2 个查找 1. 目标表中插入的最大 ID(json 代码中的 LastValue) 2. 源表中的最大 ID(最大)。

为了在复制数据中获取查找值,我编写了一个如下所述的查询,但仍然出现错误,并且无法在选择查询中获取查找值。

select * from customerwhere created_at>=curdate()-30 and id > @{activity('CDNOps_LastUpdateValue').output.firstRow.LastValue} and id <= @{activity('Source_MaxValue').output.firstRow.Max limit 20000 }

请帮我解决这个问题。

我在安排数据时收到的错误消息是,

"errorCode": "2200", "message": "'Source' 端发生故障。ErrorCode=UserErrorOdbcOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=ERROR [42000] [Microsoft][MariaDB]您的 SQL 语法有错误;请查看与您的 MariaDB 服务器版本相对应的手册,以在第 2 行的 '"LastValue":540418183}\n 和 id<={"Max":546239715}' 附近使用正确的语法…………

标签: azureazure-pipelinesazure-data-factory

解决方案


下面的语法应该是正确的:

select * from customer where created_at>=curdate()-30 and id > @{activity('CDNOps_LastUpdateValue').output.firstRow.LastValue} and id <= @{activity('Source_MaxValue').output.firstRow.Max} limit 20000

请注意,当您将查找活动输出包装到@{} 中时,这意味着您正在尝试在运行时动态评估该值,因此将不属于查找输出的“limit 20000”放入@{ }导致错误。还要确保@{activity('CDNOps_LastUpdateValue').output.firstRow.LastValue}and@{activity('Source_MaxValue').output.firstRow.Max}将被评估为与表中的列 id 可比较的值(至少相同类型)。一个调试小技巧,你可以在 UI 的 copy Activity 中创建一个用户属性来主动检查评估的查询结果是否是你想要的,见下图: 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述


推荐阅读