我们有一个Azure SQL表,我正在将其从传统数据库移到Azure Synapse Analytics(DW(表中,用于长期存储,因此可以将其从生产数据库中删除。这是一个系统表,用于我们过去使用的不推荐使用的系统(Salesforce(。我在DB的这个表中有一列是varchar(max(,它是巨大的。最大(LEN(FIELD((为1585521。我曾尝试使用数据工厂将表移动到DW中,但在那个巨大的列上失败了。我将DW表建模为生产数据库表的镜像,但它无法加载,并且尝试了好几次。我将失败的DW列更改为nvarchar(max(,但它仍然失败(认为可能是非unicode导致了失败(。有什么想法吗?这让我很困惑,因为数据存在于我们的生产数据库中,但不会很好地和平地转移到我们的DW。
我已经尝试了好几次,并收到了这些错误消息(第二次是在将DW列从varchar(max(更改为nvarchar(max(之后:
HadoopSqlException: Arithmetic overflow error converting expression to data type NVARCHAR."}
HadoopExecutionException: Too long string in column [-1]: Actual len = [4977]. MaxLEN=[4000]
当前使用Polybase有1mb的限制,并且列的长度大于此限制。解决方法是在ADF的复制活动中使用大容量插入,或者将源数据分块到8K列中,并用8K列加载到目标暂存表中。有关此限制的更多详细信息,请查看此文档。
如果使用PolyBase外部表加载表,则表行的定义长度不能超过1MB。当具有可变长度数据的行超过1MB时,可以使用BCP加载该行,但不能使用PolyBase。
当我使用";大块插入物";选项。