Azure data factory ADF V2-在prem上ADL到SQL Server,列顺序是否重要?

Azure data factory ADF V2-在prem上ADL到SQL Server,列顺序是否重要?,azure-data-factory,Azure Data Factory,我一直在尝试使用纯ADL和SQL Server数据集将数据从ADLS Azure data Lake Store中的平面文件移动到Prem上的SQL Server,我认为TablerTranslator属性将有助于映射列,并忽略它们在平面文件中的顺序。做这样的事 { "source": { "type": "AzureDataLakeStoreSource" }, "sink": { "type": "SqlSink", "

我一直在尝试使用纯ADL和SQL Server数据集将数据从ADLS Azure data Lake Store中的平面文件移动到Prem上的SQL Server,我认为TablerTranslator属性将有助于映射列,并忽略它们在平面文件中的顺序。做这样的事

{
    "source": {
        "type": "AzureDataLakeStoreSource"
    },
    "sink": {
        "type": "SqlSink",
        "writeBatchSize": 10000
    },
    "enableStaging": false,
    "cloudDataMovementUnits": 0,
    "translator": {
        "type": "TabularTranslator",
        "columnMappings": "ColA: ColA, ColB:ColB"
    }
}
然而,看起来顺序很重要,而且TablerTranslator可能只适用于SQL Server和Azure SQL数据库,是否有任何方法可以映射这些列而不必更改我的目标的列顺序

我得到的错误是一个截断错误,因为它试图将ColB数据插入我目标中的ColA中

更多细节 换句话说,我有以下来源和目标

来源:File.tsv

可乐瓶

代码1

法典B 2

编解码器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=Input string的格式不正确,Source=mscorlib,“

不需要使用表格转换器,我只在使用Polybase将数据从ADL移动到仓库时使用过它,但我认为内部部署数据库不支持这种方法

使用数据湖作为源时,请查看文档:

在您的情况下,如果没有表格翻译,它应该可以完全正常工作


希望这有帮助

谢谢Martin,你说得对,不需要表格转换器,我在原始问题中添加了更多细节,我想我想问的是,是否有一种方法可以映射这些列,而无需在SQL中更改目标表中的列顺序,我已经改变了我的目标表的顺序,它工作了,但是有时它对用户来说不是很优雅,因为平面文件顺序可能不会让senseI看到。尽管如此,如果tsv文件中的列名称与sql server表中的列名称相同,data factory应该能够在没有它的情况下映射它们,然后顺序就无关紧要了,如图所示:同意,我希望ADF能够处理这个问题,但看起来我遗漏了什么。你能做到吗?例如,有一个包含ColA、ColB的平面文件和一个包含ColB、ColC的目标sql server表,并将数据从ADLS移动到sql Serve on Prem上,不会出现问题?不,可以在平面文件中包含ColB、ColA,在sql server表中包含ColA、ColB,并且移动数据时不会出现问题,无论顺序如何。如果名称不同,那么是的,您需要使用表格转换器将每个列从源映射到接收器,但文档中没有提到具体的顺序。我理解,但事实并非如此,我的列名是相同的,顺序很重要:所以看起来我遗漏了什么,该特定用例的文档不清楚