我正在尝试加载单引号字符串分隔的文件,并且能够加载数据,但某些包含以下格式的字符串的记录除外。如何使用SQL Datawarehouse中的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)
)
答案 0 :(得分:0)
在这种情况下,字符串分隔符必须是单引号之外的其他东西。
我假设您使用的是逗号分隔的文件。您有两种选择:
如果要使用自定义定界符,建议使用ASCII Decimal(31)或Hex(0x1F),这是专门为此保留的。
如果要使用字符串定界符,则可以使用双引号(但是我猜这是在您的数据中)或选择其他字符。
也就是说,我的下一个猜测是您将遇到带有嵌入式回车符的数据,这将引起另一层问题。因此,建议您将提取的内容移到CSV以外的其他位置,然后转到Parquet或Orc。
答案 1 :(得分:0)
当前,SQLDW does not support中的Polybase以分隔文本格式处理转义字符。因此,您无法在SQLDW中加载文件目录。
为了加载文件,您可以预处理输入文件。在预处理期间,您可能会生成另一个二进制格式的数据文件(PARQUET或ORC,可通过多碱基读取目录)或另一个带有某些特殊字段分隔符的定界文件(数据文件中不需要的任何字符,例如|)。或〜)。具有这种特殊字符,无需使用转义/定界值)
希望它能提供帮助。
<format_options> ::= { FIELD_TERMINATOR = field_terminator | STRING_DELIMITER = string_delimiter | First_Row = integer -- ONLY AVAILABLE SQL DW | DATE_FORMAT = datetime_format | USE_TYPE_DEFAULT = { TRUE | FALSE } | Encoding = {'UTF8' | 'UTF16'} }