我有一个存储在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