我有一个具有以下格式的文本文件。
"01|""样本""|""测试"|""测试""|""01"|""""。
我通过将格式选项 STRING_DELIMITER 设置为 '"' 在 Azure Synapse 中创建了一个外部表。但是在通过 sp 处理文件时,我收到了以下错误。
“在字符串分隔符后找不到分隔符”
有没有可用的解决方案?任何帮助,将不胜感激。
问候,桑迪普
我有一个具有以下格式的文本文件。
"01|""样本""|""测试"|""测试""|""01"|""""。
我通过将格式选项 STRING_DELIMITER 设置为 '"' 在 Azure Synapse 中创建了一个外部表。但是在通过 sp 处理文件时,我收到了以下错误。
“在字符串分隔符后找不到分隔符”
有没有可用的解决方案?任何帮助,将不胜感激。
问候,桑迪普
在我对该示例字符串的测试中,引号引起了问题,因为它们非常不均匀。您最好创建忽略引号的外部表并在之后清理它们,例如设置您的外部文件格式,如下所示:
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 字符。