首页 > 解决方案 > Azure Synapse - 字符串分隔符

问题描述

我有一个具有以下格式的文本文件。

"01|""样本""|""测试"|""测试""|""01"|""""。

我通过将格式选项 STRING_DELIMITER 设置为 '"' 在 Azure Synapse 中创建了一个外部表。但是在通过 sp 处理文件时,我收到了以下错误。

“在字符串分隔符后找不到分隔符”

有没有可用的解决方案?任何帮助,将不胜感激。

问候,桑迪普

标签: external-tablesazure-sql-data-warehouseazure-synapse

解决方案


在我对该示例字符串的测试中,引号引起了问题,因为它们非常不均匀。您最好创建忽略引号的外部表并在之后清理它们,例如设置您的外部文件格式,如下所示:

CREATE EXTERNAL FILE FORMAT ff_pipeFileFormat
WITH (
    FORMAT_TYPE = DELIMITEDTEXT,
    FORMAT_OPTIONS (
        FIELD_TERMINATOR = '|',
        --STRING_DELIMITER = '"',  -- removed
        USE_TYPE_DEFAULT = FALSE
        )
);

使用 清除引号REPLACE,例如:

SELECT 
    REPLACE( a, '"', '' ) a,
    REPLACE( b, '"', '' ) b,
    REPLACE( c, '"', '' ) c,
    REPLACE( d, '"', '' ) d,
    REPLACE( e, '"', '' ) e,
    REPLACE( f, '"', '' ) f
FROM dbo.yourTable

我的结果:

我的结果


推荐阅读