【问题标题】:Azure Synapse - String DelimiterAzure Synapse - 字符串分隔符
【发布时间】:2020-07-03 22:17:45
【问题描述】:

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

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

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

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

有什么解决方案可以解决这个问题吗?任何帮助将不胜感激。

问候, 桑迪普

【问题讨论】:

  • 请发布完整的CREATE EXTERNAL FILE FORMATCREATE EXTERNAL TABLE 命令。

标签: external-tables azure-sql-data-warehouse azure-synapse


【解决方案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

我的结果:

【讨论】:

  • 这假定所有值都不包含字段分隔符字符 (|)。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 2021-07-28
    • 1970-01-01
    • 2014-02-10
    • 2023-02-25
    • 1970-01-01
    • 2014-06-29
    • 2018-09-17
    • 2014-01-12
    • 1970-01-01
    相关资源
    最近更新 更多