U-SQL External table error: 'Unable to cast object of type 'System.DBNull' to type 'System.Type'.'

U-SQL External table error: 'Unable to cast object of type 'System.DBNull' to type 'System.Type'.'

我无法为来自 Azure SQL 数据库的两个特定表创建外部表,

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

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'.'

请看我在你开的另一个帖子里的回答。除此之外,我还建议您查看如何使用查询创建 table。在查询中,您应该能够在查询中使用 "extractors" 来创建 table。要了解有关提取器的更多信息,请查看此文档。

希望对您有所帮助。

我通过对外部 table 进行变通解决了它: 我使用 EXECUTE

创建了一个 view that 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