【问题标题】:How to resolve special character issue in SQL Server data warehouse如何解决 SQL Server 数据仓库中的特殊字符问题
【发布时间】:2019-04-17 12:04:24
【问题描述】:

我必须使用 polybase 表将数据从 datalake 加载到 SQL Server 数据仓库中。我已经创建了用于创建外部表的设置。我已经创建了外部表,我正在尝试做select * from ext_t1 表,但我得到???? 用于ext_table 中的列。

下面是我的外部表脚本。我发现数据中的特殊字符存在问题。我们如何转义特殊字符并且只需要使用 varchar 数据类型而不是 nvarchar。有人可以帮我解决这个问题吗?

CREATE EXTERNAL FILE FORMAT [CSVFileFormat_Test] WITH (FORMAT_TYPE = DELIMITEDTEXT, FORMAT_OPTIONS (FIELD_TERMINATOR = N',', STRING_DELIMITER = N'"',DATE_FORMAT='yyyy-MM-dd', FIRST_ROW = 2, USE_TYPE_DEFAULT = True,Encoding='UTF8'))

CREATE EXTERNAL TABLE [dbo].[EXT_TEST1]
( A VARCHAR(10),B VARCHAR(20)) 
(DATA_SOURCE = [Azure_Datalake],LOCATION = N'/A/Test_CSV/',FILE_FORMAT =csvfileformat,REJECT_TYPE = VALUE,REJECT_VALUE = 1)

数据:(csv中A列的特殊字符如下)

ÐК Ð’ÐЗМ Завод
ÐК Ð’ÐЗМ ЗаÑтройщик

【问题讨论】:

    标签: sql-server-2016 azure-data-lake azure-sql-data-warehouse


    【解决方案1】:

    这是数据不匹配问题,read 可能会对您有所帮助。

    外部表注意事项

    创建外部表很容易,但需要讨论一些细微差别。

    外部表是强类型的。这意味着被摄取的每一行数据都必须满足表架构定义。如果某行与架构定义不匹配,则会拒绝加载该行。

    REJECT_TYPE 和 REJECT_VALUE 选项允许您定义最终表中必须存在的行数或数据百分比。在加载过程中,如果达到拒绝值,则加载失败。拒绝行的最常见原因是架构定义不匹配。例如,当文件中的数据是字符串时,如果一列被错误地赋予了 int 的架构,则每一行都将无法加载。

    Data Lake Storage Gen1 使用基于角色的访问控制 (RBAC) 来控制对数据的访问。这意味着服务主体必须对 location 参数中定义的目录以及最终目录和文件的子目录具有读取权限。这使 PolyBase 能够验证和加载该数据。

    【讨论】:

      猜你喜欢
      • 2010-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多