span8
span4
在下面的例子中,我们将展示ArcSDE地理数据库的后端SQL Server和Oracle数据库上发出SQL命令。在下面的示例中发出的SQL命令的方式来加快与ArcSDE地理数据库版本写入。
注意/免责声明:发出SQL命令到ArcSDE地理数据库的后端数据库是冒险的行为,并可能导致数据损坏/丢失。通过绕过地理数据库的ArcSDE的一面,我们阻止了由ArcGIS中从保护安装在数据库中的数据而建立的保障。亚搏在线因此,我们不建议发出SQL命令到后端数据库。如果你选择这样做,要非常小心。
- ArcGIS的安装已授权+
- ArcSDE地理数据库
在我们开始之前,所提供的数据加载到ArcSDE地理数据库。一旦您已加载数据到地理数据库,请注册数据库为版本。记下表名和版本,你要使用编辑。有关该版本过程的详细信息,请参阅Esri的这篇文章。
SQL Server选项-从版本化的表/视图中删除所有行(截断)。
请注意:我们不能进行显式截断的原因是与我们交互的版本化表实际上是一个视图。视图不能被截断。因此,我们必须使用不同的命令来执行truncate。
1。打开“SQLServerSDEVersion.fmw”或SQLCreator添加到工作区,连接到ArcSDE地理数据库的后端数据库。在这个例子中,我们连接到Microsoft SQL Server的空间。
2。下面的SQL代码添加到SQLCreator
FME_SQL_DELIMITER;/ *下面的代码将设置一个版本的编辑,以及启动和停止编辑会话,并会删除该组版本表中的所有行。应该指出的是,所有的编辑将需要reconcoled +张贴在ArcGIS中,不能在FME完成。注意:改变“sdeuser.TrentVersionArc”你打算编辑的版本。* / USE geodatabase104;- 指向数据库名EXEC sde.set_current_version 'sdeuser.TrentVersionArc';- 设置版本访问EXEC sde.edit_version 'sdeuser.TrentVersionArc',1;- 在版本中打开编辑会话BEGIN TRANSACTION [TRAN1] BEGIN TRY DELETE FROM sdeuser.SampleData_SQLVersion_evw --attempts表的截断COMMIT TRANSACTION [TRAN1] - 如果成功的话将提交事务END TRY BEGIN CATCH - 如果发生错误,将 rollback the transaction ROLLBACK TRANSACTION [Tran1] END CATCH EXEC sde.edit_version 'sdeuser.TrentVersionArc', 2;- 结束编辑会话
3。运行您的翻译。如果转换成功,检查基表,并在ArcGIS的特定版本。
Oracle选项——使用SQL将更新应用到版本化的表
1。“OracleArcSDEVersion开放。fmw' or Add an ArcSDE Reader - Connect to your ArcSDE instance and table.
2。添加一个SQLExecutor,连接到ArcSDE地理数据库的后端数据库。在本例中,我们连接到一个Oracle非空间实例,即ArcSDE地理数据库。
在这个SQLExecutor中,我们将发出以下SQL命令:
FME_SQL_DELIMITER / BEGIN sde.version_util.set_current_version('C129979_VersionTest');sde.version_user_ddl。edit_version('C129979_VersionTest', 1);结束;/
上面的SQL语句将设置我们希望使用的版本,并使用该版本打开一个编辑会话。
3。添加第二个SQLExecutor,连接到之前使用的数据库。这是
更新将应用以下SQL代码:
FME_SQL_DELIMITER / BEGIN UPDATE C129979_Trent_evw——基于ObjectID字段更新表。设置“SUBZONE”=“Test”,其中“OBJECTID”= @Value(OBJECTID);提交;——如果成功,提交特性。如果更新失败,将回滚翻译。回滚;结束;/
4.添加一个采样变压器。这样做的原因是只向SQLExecutor发送一个特性,该特性将结束版本化表上的编辑会话。因为SQLExecutor将对每个特性执行,在第一个特性之后结束编辑会话,所以我们不需要发送多个特性。设置参数如下
5.添加一个特性保持器转换器。这只是用来防止最后一个SQLExecutor在接收到某个特性时执行。之所以要防止这样做,是因为如果执行最后一条SQL语句,它将结束编辑会话,因此,您将在每次翻译时更新一个特性。
6.添加第三个SQLExecutor,再次连接到相同的数据库。在这里,我们将使用以下SQL代码结束编辑会话。
FME_SQL_DELIMITER / BEGIN sde.version_user_ddl。edit_version (' C129979_VersionTest ', 2);结束;/
7.运行您的翻译。如果转换成功,请在ArcGIS中检查基表和特定的版本。
截断版本后的SQL Server基表。
SQL Server特定的版本截断后
更新版本后的Oracle基表。
Oracle更新了版本表,查看我们刚刚更新的版本。
外部资源:
数据属性
这里使用的数据来源于由温哥华的城市不列颠哥伦比亚省。它包含在开放政府许可下的信息-温哥华。
FME_SQL_DELIMITER /
开始插入到C129979_Trent_evw
(column2 column1 column3…)
值
(value1, value2, value3…);
提交;
异常——只需要异常来处理错误
当别人然后回滚;
结束;
/
©2019安全亚搏在线软件公司|法律