ARCGIS - 从ORACLE到SQL Server的ST_GEOMETRY

时间:2017-04-25 19:53:12

标签: sql-server oracle esri

我有一个存储在Oracle系统上的ESRI地理数据库。这是生成数据的地方,并被视为源系统。我需要能够运行一个提取数据并将数据导入SQL Server数据库的工作(也可以利用ESRI sde)。我知道将ST_Geometry类型带到SQL Server会有问题,但我无法找到任何文档来说明成功执行此任务所需的一切。例如,我应该从oracle中提取哪种形式的数据?导入该功能需要什么。我的理解是新行必须以各种方式注册。

Oracle Shape的数据类型:[SDE.ST_GEOMETRY]

SQL Server中的数据类型:[Geometry]

更新

我已经能够成功地将ST_Geometry从oracle转换为varchar Well Known Text格式。我是使用sde.ST_ASText()完成的。这需要在oracle上配置外部进程。

我的select语句如下所示:

SELECT COL1, COL2, COL3, sde.ST_ASTEXT(SHAPE) AS SHAPE FROM TABLE

现在我遇到的问题是将其转换为SQL SERVER GEOMETRY类型。我正在使用一个存储过程,我想循环遍历列,附加到select语句并应用SQL SERVER中包含的STGeomFromText()函数。

我无法成功完成此操作。

相关代码如下:

        SELECT COLUMN_NAME
        INTO #ColCursor
        FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE 
        WHERE TABLE_NAME = @TBL

        DECLARE
        @SEL varchar(MAX),
        @TCOL varchar(75),
        @GCOL varchar(75)

        SELECT @I = 0
        DECLARE ColCursor CURSOR FOR 
        SELECT COLUMN_NAME FROM #ColCursor
        OPEN ColCursor
        FETCH ColCursor INTO @TCOL
        WHILE @@FETCH_STATUS = 0

        BEGIN
            IF @TCOL = 'SHAPE'
                BEGIN
                    SELECT @GCOL = 'STGeomFromText(@TCOL,@SRID)'
                END
            ELSE
                BEGIN
                    IF @I > 1 SELECT @SEL = @SEL + ', ' + @TCOL
                    ELSE SELECT @SEL = @TCOL
                    SELECT @I = @I + 1
                    FETCH ColCursor INTO @TCOL
                END
        END

        CLOSE ColCursor
        DEALLOCATE ColCursor

        SELECT @SEL = @SEL +', ' + @GCOL

0 个答案:

没有答案