0

我必须使用 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列的特殊字符如下)

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

1 回答 1

0

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

外部表注意事项

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

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

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

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

于 2019-04-22T21:09:34.513 回答