我一直在尝试将数据从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
更多详情 换句话说,我有以下来源和目标......
来源:File.tsv
ColA ColB
“codeA”1
“codeB”2
“codeC”3
目标:SQL Server表
|---------------------|------------------|
| ColB | ColB |
|---------------------|------------------|
| | |
|---------------------|------------------|
看起来来自ColA的数据试图插入ColB然后我得到以下内容:
“ErrorCode = UserErrorInvalidDataValue,'Type = Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message = Column'ColB'包含无效值'codeA';。无法转换'codeA';要输入'Double';。,Source = Microsoft.DataTransfer.Common,''Type = System.FormatException,Message =输入字符串的格式不正确。,Source = mscorlib,'“
答案 0 :(得分:1)
不需要使用表格转换器,我只在使用Polybase将数据从ADLS移动到仓库时使用它,但我认为本地数据库不支持此功能。
使用数据湖作为来源时,请查看文档:{{3}}
如果没有表格翻译,它应该可以正常工作。
希望这有帮助!!