external-tables - Azure Synapse - 字符串分隔符
问题描述
我有一个具有以下格式的文本文件。
"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
我的结果:
推荐阅读
- laravel - 如何将变量从服务器传递到 app.js?Laravel + Vue
- php - 如何将多个图像发送到 REST API
- python - Flask 日志记录处理程序信息
- javascript - slack botkit - 特定斜杠命令上的“听到”不起作用
- javascript - Ember 仅在初始渲染时调用 jQuery 代码
- r - R:从列表中查找所有元素并将结果写入另一个列表
- swift - 以编程方式添加更改 Tableview 行的按钮
- java - 如何使用 Hibernate 在实体中创建属性表?
- javascript - 我如何在反应钩子中编写“setTimeOut”函数?
- javascript - 如何将 SAR 报告提取到 Excel