首页 > 解决方案 > 通过 Polybase 加载特殊字符

问题描述

我正在尝试加载单引号字符串分隔的文件,并且我能够加载数据,但包含以下格式的字符串的某些记录除外。如何在 SQL 数据仓库中使用 PolyBase 加载以下值。任何输入都受到高度赞赏。

例如:

'Don''t Include'
'1'''
'Can''t'
'VM''s' 

外部文件格式:

CREATE EXTERNAL FILE FORMAT SAMPLE_HEADER
with (format_type=delimitedtext,
format_options(
FIELD_TERMINATOR=',',
STRING_DELIMITER='''',
DATE_FORMAT='yyyy-MM-dd HH:mm:ss',
USE_TYPE_DEFAULT=False)
)

标签: azureazure-sql-databaseazure-blob-storageazure-sqldwpolybase

解决方案


在这种情况下,您的字符串分隔符需要不是单引号。

我假设您使用的是逗号分隔的文件。你有几个选择:

  • 使您的列分隔符不是逗号。
  • 使您的字符串定界符成为您的数据中不存在的字符
  • 使用 CSV 以外的输出格式,例如 Parquet 或 Orc

如果您要使用自定义分隔符,我建议使用 ASCII Decimal(31) 或 Hex(0x1F),这是专门为此目的而保留的。

如果您要使用字符串分隔符,您可以使用双引号(但我猜这是在您的数据中)或选择其他字符。

也就是说,我的下一个猜测是您将遇到带有嵌入式回车的数据,这将导致另一层问题。出于这个原因,我建议您将数据提取移至 CSV 以外的其他内容,并使用 Parquet 或 Orc。


推荐阅读