【发布时间】:2021-02-09 05:14:52
【问题描述】:
我无法找到使用 Polybase 在 Azure SQL 数据仓库(突触 SQL 池)中创建外部表的方法,其中某些字段包含嵌入式逗号。
对于一个 4 列的 csv 文件如下:
myresourcename,
myresourcelocation,
"""resourceVersion"": ""windows"",""deployedBy"": ""john"",""project_name"": ""test_project""",
"{ ""ResourceType"": ""Network"", ""programName"": ""v1""}"
尝试使用以下创建外部表语句。
CREATE EXTERNAL FILE FORMAT my_format
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS(
FIELD_TERMINATOR=',',
STRING_DELIMITER='"',
First_Row = 2
)
);
CREATE EXTERNAL TABLE my_external_table
(
resourceName VARCHAR,
resourceLocation VARCHAR,
resourceTags VARCHAR,
resourceDetails VARCHAR
)
WITH (
LOCATION = 'my/location/',
DATA_SOURCE = my_source,
FILE_FORMAT = my_format
)
但是查询这个表会报如下错误:
Failed to execute query. Error: HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: HadoopExecutionException: Too many columns in the line.
任何帮助将不胜感激。
【问题讨论】:
-
一定要DELIMITEDTEXT格式吗?我更喜欢使用 parquet.snappy,因为压缩效果更好,而且几乎不存在数据质量问题。否则我认为该数据是垃圾,并将我的拒绝阈值设置为从 0 到 50 或与此一致的值
标签: sql-server external-tables azure-synapse polybase