字符串值中的Azure数据工厂转义字符

字符串值中的Azure数据工厂转义字符,azure,azure-data-factory,snowflake-cloud-data-platform,azure-data-factory-2,Azure,Azure Data Factory,Snowflake Cloud Data Platform,Azure Data Factory 2,我在Azure数据工厂中构建了一个管道,它从SQL中提取数据并将其存储为csv。我的csv数据集的转义字符集为黑色斜杠(\),引号字符集为双引号(“”)。这导致的问题是,我的数据中有一个只有反斜杠的空字符串,不幸的是,反斜杠存在很多。许多表都有很多列 当这种情况发生时,ADF将反斜杠输出为“\”,然后无法从其他系统解释加载。第二个引号被忽略,因为它正在被转义,它变成了一个单引号,并抛出列。我尝试使用其他字符,如“^”,来转义。但我也有”^“在多个表列的多个值中,可能会发生相同的问题 似乎每当值(

我在Azure数据工厂中构建了一个管道,它从SQL中提取数据并将其存储为csv。我的csv数据集的转义字符集为黑色斜杠
(\)
,引号字符集为双引号
(“”
)。这导致的问题是,我的数据中有一个只有反斜杠的空字符串,不幸的是,反斜杠存在很多。许多表都有很多列

当这种情况发生时,ADF将反斜杠输出为
“\”
,然后无法从其他系统解释加载。第二个引号被忽略,因为它正在被转义,它变成了一个单引号,并抛出列。我尝试使用其他字符,如
“^”
,来转义。但我也有
”^“
在多个表列的多个值中,可能会发生相同的问题

似乎每当值(或唯一值)末尾的数据中存在转义字符时,就会导致错误。我如何处理这个问题而不必在源端解决它?为什么数据工厂在数据中不将转义字符转换为双反斜杠?我希望一个
“\”
的字符串被转换成
“\\”
,但它没有发生。我错过什么了吗

谢谢你的帮助


是否可以根据您在前端使用的设置共享ADF生成的COPY INTO语句的外观?您的数据中是否有需要转义的值?如果不指定转义字符会发生什么情况?复制到DEV_STAGING。。()来自@MyStage//2020/10/01/FileName pattern='.*.csv'文件格式=DEV_STAGING.PUBLIC.BLOB_csv;错误:找到了字符“0”而不是字段分隔符“,”文件“_v2_20201001T123000.csv”,第148120行,字符104行,第148119行,第“[“$10”:10]列,如果要继续加载…@MikeWalton我认为这不是雪花的问题,而是当引用的字符串中存在转义字符时,ADF如何格式化数据。我正在测试,看看是否不使用报价将工作。此外,我确实有需要转义的值。我正在将一个项目从ADLS第1代迁移到第2代,在第1代中,ADF允许您使用无转义字符的引用,并且一切正常。但现在,如果使用引号,它们会强制您同时使用转义字符和引号,这就是问题的根源。我测试了在ADF中不引用数据,它解决了转义字符问题,但它造成了雪花无法正确解释空字符串的问题。因为我没有引用字符串,所以它认为空字符串值为Null,并且不符合列约束。因此,它向euqal,NULL,解释任何想法@MikeWalton。谢谢你的帮助!我认为您需要显式地使用IFNULL函数,这将迫使您在COPY INTO语句中使用SELECT。我不知道ADF的接口是否允许您这样做,但我认为这就是您需要让副本进入工作状态的方式。根据您在前端使用的设置,是否可以共享ADF生成的COPY INTO语句的外观?您的数据中是否有需要转义的值?如果不指定转义字符会发生什么情况?复制到DEV_STAGING。。()来自@MyStage//2020/10/01/FileName pattern='.*.csv'文件格式=DEV_STAGING.PUBLIC.BLOB_csv;错误:找到了字符“0”而不是字段分隔符“,”文件“_v2_20201001T123000.csv”,第148120行,字符104行,第148119行,第“[“$10”:10]列,如果要继续加载…@MikeWalton我认为这不是雪花的问题,而是当引用的字符串中存在转义字符时,ADF如何格式化数据。我正在测试,看看是否不使用报价将工作。此外,我确实有需要转义的值。我正在将一个项目从ADLS第1代迁移到第2代,在第1代中,ADF允许您使用无转义字符的引用,并且一切正常。但现在,如果使用引号,它们会强制您同时使用转义字符和引号,这就是问题的根源。我测试了在ADF中不引用数据,它解决了转义字符问题,但它造成了雪花无法正确解释空字符串的问题。因为我没有引用字符串,所以它认为空字符串值为Null,并且不符合列约束。因此,它向euqal,NULL,解释任何想法@MikeWalton。谢谢你的帮助!我认为您需要显式地使用IFNULL函数,这将迫使您在COPY INTO语句中使用SELECT。我不知道ADF的接口是否允许您这样做,但我认为这就是您需要让副本工作的方式。