Лазурный синапс - разделитель строк

У меня есть текстовый файл следующего формата.

"01|" "образец" "|" "Тест" | "" тестирование ""|""01"|"""".

Я создал внешнюю таблицу в Azure Synapse, установив для параметра формата STRING_DELIMITER значение '"'. Но при обработке файла через sp я получаю указанную ниже ошибку.

"Не удалось найти разделитель после разделителя строк"

Есть ли какое-нибудь решение для этого? Любая помощь будет оценена.

С уважением, Сандип

2 ответа

Решение

В моих тестах с этой примерной строкой кавычки вызвали проблему, потому что они очень неровные. Лучше создать внешнюю таблицу, игнорируя кавычки, и затем очистить их, например, установите внешний формат файла следующим образом:

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

Другие вопросы по тегам