Azure Synapse - 字符串分隔符

Azure Synapse - String Delimiter

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

"01|""sample""|""Test"|""testing""|""01"|"""".

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

"Could not find a delimiter after string delimiter"

有什么解决办法吗?任何帮助将不胜感激。

此致, 桑迪普

在我使用该示例字符串进行的测试中,引号引起了问题,因为它们太不均匀了。你最好创建外部 table 忽略引号并在之后清理它们,例如像这样设置你的外部文件格式:

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

我的结果:

CREATE EXTERNAL FILE FORMAT 不支持列值内的 STRING_DELIMITER 个字符。

https://feedback.azure.com/forums/307516-sql-data-warehouse/suggestions/9882219-fix-string-delimiter-implementation-in-polybase