当其中一个csv列包含引号作为数据的一部分时,COPYINTO失败

ut6juiuv  于 2023-06-27  发布在  其他
关注(0)|答案(1)|浏览(93)

我有一个CSV文件,其中一个列包含"作为数据的一部分该文件最初在ASF中从SFTP位置复制到ADLS,在复制活动中我尝试添加引号作为Quote字符,以便我的数据看起来像(这只是一个示例,实际文件更大)
ID ^名称
“1”^“Galaxy 7”“
破坏Azure Synapse COPY INTO命令的是Galaxy 7旁边的英寸符号(“)
我甚至尝试在将CSV输出到adls的数据源中添加\作为转义字符,但没有帮助
总是得到相同的错误
由于CSV数据文件/dev/switchingdb/avi_1.txt中第2行第21列中的列值无效,大容量加载失败。
复制到命令

COPY INTO stg.cdm_stg_Switching_DB FROM 'https://prdacrdatalake.dfs.core.windows.net/adf/dev/switchingdb/avi_1.txt'
                WITH (
                        FILE_TYPE = 'CSV'
                    --  ,COMPRESSION = 'gzip'
                        ,FIELDQUOTE ='"'
                        ,FIRSTROW =2
                        ,FIELDTERMINATOR ='^'
                        ,CREDENTIAL = (IDENTITY = 'Managed Identity')
                )
ecfdbz9o

ecfdbz9o1#

您可以尝试在COPY INTO命令中使用转义符。

COPY INTO stg.cdm_stg_Switching_DB FROM 'https://prdacrdatalake.dfs.core.windows.net/adf/dev/switchingdb/avi_1.txt'
    WITH (
        FILE_TYPE = 'CSV',
        FIELDQUOTE = '"',
        ESCAPE = '\\',
        FIRSTROW = 2,
        FIELDTERMINATOR = '^',
        CREDENTIAL = (IDENTITY = 'Managed Identity')
    )

它将告诉COPY将反斜杠字符(\)视为转义字符。通过使用双反斜杠(\\),您可以在字段中包含文字双引号("),而不会将其解释为结束引号。

相关问题