Azure数据工厂地理或几何数据类型

时间:2016-01-25 10:43:28

标签: azure spatial sqlgeography cross-database azure-data-factory

我一直在尝试设置Azure数据工厂(迄今为止失败)。我有2个Azure SQL数据库,它们都在同一台服务器上(在同一个订阅中)

在两个数据库中,我都有一个包含以下模式的表

CREATE TABLE [dbo].[Country_Boundaries]
(
    [Id] [nvarchar](255) NOT NULL,
    [Boundary] [geography] NULL,
    [Name] [nvarchar](255) NULL,
    [Centroid] [geography] NULL
)

我想使用数据工厂将数据从一个数据库表传输到第二个数据库中的同一个结构化表。

数据工厂是否支持Geography / Geometry数据类型?

我还看过使用Azure数据同步来执行此操作 - 遗憾的是,表中的每一行都太大而无法进行单个数据同步事务(该表包含使用地理数据类型的复杂国家/地区边界)。

实施例

No of Bytes
Scotland -   55,340,796
NorthernI -  2,149,616
England -    2,126,804
Wales -      705,266

我看过这样做的另一种方法是使用引用表,但不幸的是,引用的表也不支持Geography / Geometry数据类型。

3 个答案:

答案 0 :(得分:0)

  

数据工厂是否支持Geography / Geometry数据类型?

不,Azure Data Factory目前不支持空间类型。通过复制向导选择要同步的表时,如果表具有任何空间列,则会收到错误:

  

处理请求时出错:列:位置,不支持数据类型。 activityId:[...]

或者,如果您选择多个表,其中一个表具有空间列,您将收到错误:

  

某些表包含不受支持的数据类型或对象类型:[dbo]。[表]。请使用自定义查询将其排除。

答案 1 :(得分:0)

我将研究如何将数据转换为众所周知的二进制或众所周知的文本,然后将其传递到adf,然后使用sproc和table类型批量加载数据,这使您能够重新转换数据地理别忘了加入srid

答案 2 :(得分:0)

以有限的方式支持SQL地理/几何,因为它们只能在SQL数据库之间传输。 由于您的源和接收SQL表具有相同的架构,

CREATE TABLE [dbo].[Country_Boundaries]
(
    [Id] [nvarchar](255) NOT NULL,
    [Boundary] [geography] NULL,
    [Name] [nvarchar](255) NULL,
    [Centroid] [geography] NULL
)

您唯一需要做的就是创建源和接收器数据集以及复制活动。复制活动会将4列数据从源转移到接收器。