【问题标题】:U-SQL External table error: 'Unable to cast object of type 'System.DBNull' to type 'System.Type'.'U-SQL 外部表错误:“无法将“System.DBNull”类型的对象转换为“System.Type”类型。
【发布时间】:2019-05-15 07:17:20
【问题描述】:

我无法从 Azure SQL DB 为两个特定表创建外部表,

我已经创建了几个没有问题的外部表。 我可以看到失败和成功的外部表之间的唯一区别是失败的表包含地理类型列,所以我认为这是问题,但我不确定。

CREATE EXTERNAL TABLE IF NOT EXISTS [Data].[Devices]
(
    [Id] int
)
FROM SqlDbSource LOCATION "[Data].[Devices]";
Failed to connect to data source: 'SqlDbSource', with error(s): 'Unable to cast object of type 'System.DBNull' to type 'System.Type'.'

【问题讨论】:

  • 请检查所有数据,看看数据库中是否有插入为空的属性。
  • @LeonYue 我只取 1 列:Id,它不为空

标签: azure-sql-database azure-data-lake u-sql


【解决方案1】:

我通过对外部表进行变通解决了这个问题: 我使用 EXECUTE 创建了一个view select from external rowset

CREATE VIEW IF NOT EXISTS [Data].[Devices]
AS 
SELECT Id FROM EXTERNAL SqlDbSource 
EXECUTE "SELECT Id FROM [Data].[Devices]";

这使得脚本完全忽略了地理类型列,U-SQL 目前不支持 REMOTEABLE_TYPE for data sources

【讨论】:

    【解决方案2】:

    请在您打开的其他线程上查看我的答案。除此之外,我还建议您查看如何使用查询创建表。在查询中,您应该能够在查询中使用“提取器”来创建表。要了解有关提取器的更多信息,请查看此文档。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 2021-03-26
      • 2021-04-26
      相关资源
      最近更新 更多