如何在 Azure 数据工厂中使用预复制脚本删除 null/special 个字符行?

How to use pre-copy script in Azure Data Factory to remove null/special character rows?

我正在使用 Azure 数据工厂 (ADF) 将文件夹中的数据从 Azure Data Lake 移动到 SQL 服务器。

该文件夹包含数百个 .csv 文件。但是,这些 csv 的一个不一致问题是一些(不是全部)有一个包含特殊字符的最后一行,当尝试加载到具有非 NVARCHAR(MAX) 数据类型的 sql table 时将失败。为了解决这个问题,我必须首先使用 ADF 将数据加载到暂存 tables 中,其中所有列都设置为 NVARCHAR(MAX),然后我将那些不包含特殊字符的行插入 tables 具有适当的数据类型。

这是一个每周过程,超过 1 TB 的数据,移动数据需要很长时间,所以我正在寻找导入最终 table 的方法,而不是使用临时组件。

我注意到有一个 'pre-copy script' 字段可以在加载到 sql 服务器之前执行。我想添加代码,使我能够在加载到 sql 服务器之前解析出特殊字符或空行。

我不确定如何处理这个问题,因为 csv 不会存储在 table 中,所以 SQL 代码不起作用。关于在将数据加载到 sql 服务器之前如何利用预复制脚本清理数据的任何指导?

预复制脚本是您在复制新数据之前针对数据库 运行 的脚本,而不是修改您正在摄取的数据。

我已经在另一个问题上回答了这个问题,提供了一个使用中间方法的可能解决方案 table:

希望对您有所帮助!

可以考虑存储过程。 https://docs.microsoft.com/en-us/azure/data-factory/connector-azure-sql-database#invoking-stored-procedure-for-sql-sink