使用ADF复制活动导入SqlGeography至ADLS Gen2失败求助
解决ADF复制活动不支持SqlGeography类型导入ADLS Gen2的问题
ADF复制活动本身不直接支持SqlGeography数据类型,可通过以下几种方案解决:
方案1:源端SQL查询转换为WKT文本
在复制活动的源配置中,放弃直接选择表,改用自定义SQL查询,通过SQL Server内置函数将SqlGeography列转换为Well-Known Text(WKT)格式的文本:
SELECT [其他列名], Spatial.STAsText() AS Spatial_WKT FROM YourTargetTable
转换后的文本类型可被ADF正常识别,导出到ADLS Gen2后,若需还原地理类型,可通过STGeomFromText()函数重新转换。
方案2:源端SQL查询转换为JSON格式
同样使用自定义SQL查询,通过AsJson()函数将SqlGeography列转为JSON格式:
SELECT [其他列名], Spatial.AsJson() AS Spatial_JSON FROM YourTargetTable
JSON格式兼容性强,导出后便于后续解析地理数据结构。
方案3:使用ADF数据流处理复杂转换
如果需要更灵活的转换逻辑,可采用ADF数据流:
- 数据源选择SQL Server,读取包含SqlGeography列的表。
- 添加派生列转换,使用表达式将地理列转为字符串类型(例如
toString(Spatial),具体函数可参考ADF数据流内置函数)。 - 将处理后的数据集写入ADLS Gen2目标存储。
注意事项
- 转换后的文本/JSON格式会完整保留原地理数据的空间信息,仅存储格式变为ADF支持的类型。
- 若目标为Parquet等列存格式,需将转换后的列类型设置为
string,确保兼容性。
内容的提问来源于stack exchange,提问作者practicalGuy
相关产品推荐
相关产品推荐

