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 个字符。
我有一个格式如下的文本文件。
"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 个字符。