我正在使用Azure数据工厂(ADF)将文件夹中的数据从Azure data Lake移动到SQL Server。
该文件夹包含数百个.csv文件。然而,这些csv的一个不一致的问题是,有些(而不是全部)的最后一行包含一个特殊字符,当试图加载到数据类型不是NVARCHAR(MAX)的sql表时,该字符将失败。为了解决这个问题,我必须首先使用ADF将数据加载到所有列都设置为NVARCHAR(MAX)的暂存表中,然后将那些不包含特殊字符的行插入到具有适当数据类型的表中。
这是一个每周的过程,数据量超过1 TB,移动数据需要很长时间,所以我正在寻找导入到最终表中的方法,而不是使用暂存组件。
我注意到有一个"预复制脚本"字段,可以在加载到sql server之前执行。我想添加一些代码,使我能够在加载到sql server之前解析出特殊字符或空行。
我不确定如何处理这个问题,因为csv不会存储在表中,所以SQL代码不起作用。关于如何在将数据加载到sql server之前使用预复制脚本来清理数据,有什么指导吗?
预复制脚本是在将新数据复制到中之前针对数据库运行的脚本,而不是为了修改正在获取的数据。
我已经在另一个问题上回答了这个问题,使用中间表提供了一个可能的解决方案:数据工厂中的预复制脚本或动态数据处理
希望这能有所帮助!
您可以考虑存储过程。https://learn.microsoft.com/en-us/azure/data-factory/connector-azure-sql-database#invoking-sql接收器的存储过程