我一直在尝试将数据从ADLS(Azure Data Lake Store)中的平面文件移动到SQL Server On Prem,使用纯粹的ADLS和SQL Server数据集,我认为TabularTranslator属性将有助于映射列并忽略它们在平面文件中的顺序。 做这样的事情
{
"source": {
"type": "AzureDataLakeStoreSource"
},
"sink": {
"type": "SqlSink",
"writeBatchSize": 10000
},
"enableStaging": false,
"cloudDataMovementUnits": 0,
"translator": {
"type": "TabularTranslator",
"columnMappings": "ColA: ColA, ColB:ColB"
}
}
但是,看起来顺序很重要,并且TabularTranslator可能仅适用于SQL Server和Azure SQL数据库,是否可以在不更改目标的列顺序的情况下映射这些列?
我收到的错误是截断错误,因为它试图将 ColB 数据插入到我的目的地的 ColA 中
更多细节换句话说,我有以下来源和目标...
来源: 文件.tsv
可乐 ColB
"代码 A" 1
"代码B" 2
"codeC" 3
目标:SQL 服务器表
|---------------------|------------------|
| ColB | ColB |
|---------------------|------------------|
| | |
|---------------------|------------------|
看起来来自 ColA 的数据试图插入到 ColB 中,然后我得到了以下内容:
"ErrorCode=UserErrorInvalidDataValue,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Column 'ColB' 包含无效值 'codeA';。无法转换"代码 A";键入'Double';.,Source=Microsoft.DataTransfer.Common,''Type=System.FormatException,Message=Input string格式不正确,Source=mscorlib,'">
不需要使用表格转换器,我仅在使用 Polybase 将数据从 ADLS 移动到仓库时才使用它,但我认为本地数据库不支持此功能。
使用数据湖作为源时,请查看文档:https://learn.microsoft.com/en-us/azure/data-factory/connector-azure-data-lake-store#copy-activity-properties
在您的情况下,如果没有表格翻译器,它应该完全可以正常工作。
希望这有帮助!!