3

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

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

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

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

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

问候,桑迪普

4

2 回答 2

1

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

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

我的结果:

我的结果

于 2020-03-23T19:45:27.533 回答
0

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

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

于 2020-07-01T15:17:26.127 回答