斯潘8
斯潘4
在下面的示例中,我们将演示在ArcSDE地理数据库的后端SQL服务器和Oracle数据库上发出SQL命令。以下示例中发出的SQL命令是使用ArcSDE地理数据库加速版本化写入的方法。
注/免责声明:向ArcSDE地理数据库的后端数据库发出SQL命令是危险的行为,可能导致数据损坏/丢失。通过绕过地理数据库的ArcSDE端,我们正在防止ARCGIS建立的保护措施保护数亚搏在线据库中的数据。像这样的,我们不建议向后端数据库发出SQL命令。如果你选择这样做,小心点。
-Arcgis安装+许可
-ArcSDE地理数据库
在我们开始之前,将提供的数据加载到ArcSDE地理数据库中。一旦将数据加载到地理数据库中,请将数据库注册为版本控制的。记下表名和要用于编辑的版本。有关版本控制过程的更多信息,请参阅这篇ESRI文章.
SQL Server选项-从版本控制的表/视图中删除所有行(截断)。
注释:我们不能进行显式截断的原因是我们正在与之交互的版本表是,事实上,一个视图。无法截断视图。像这样的,我们必须使用不同的命令来执行截断。
1。打开“sqlserversdeversion.fmw”或将sqlcreator添加到工作区,连接到ArcSDE地理数据库的后端数据库。在这个例子中,我们连接到Microsoft SQL Server Spatial。
2。将以下SQL代码添加到sqlcreator中
fme_sql_分隔符;/*以下代码将设置要编辑的版本,以及启动和停止编辑会话,并将从设置版本的表中删除所有行。需要注意的是,所有编辑都需要在Arcgis中重新汇总+发布,无法在FME中完成。注意:将“sdeuser.trentversionarc”更改为要编辑的版本。*/使用geodatabase104;--指向数据库名称exec sde.set_current_version'sdeuser.trentversionarc';--将版本设置为accessexec sde.edit_version'sdeuser.trentversionarc',1;--在versionBegin事务[Tran1]上打开编辑会话begin try delete from sdeuser.sampledata_sqlversion_evw--尝试截断表提交事务[Tran1]--如果成功,将提交事务并尝试注册catch--如果发生错误,将回滚事务回滚事务[tran1]结束catchexec sde.edit_version'sdeuser.trentversionarc',2;--结束编辑会话
三。运行您的翻译。如果翻译成功,在Arcgis中检查基表和特定版本。
Oracle选项-使用SQL将更新应用于版本化表
1。打开“oraclearcsdeversion.fmw”或添加ArcSDE读卡器-连接到ArcSDE实例和表。
2。添加一个连接到ArcSDE地理数据库后端数据库的sqlExecutor。在这个例子中,我们连接到一个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语句将设置我们要处理的版本,以及使用该版本打开编辑会话。
三。添加第二个sqlExecutor,连接到以前使用的同一数据库。这是
将使用以下SQL代码应用更新的位置:
fme_sql_delimiter/begin update c129979_trent_evw--根据objectid字段更新表。设置“subzone”='test',其中“objectid”=@value(objectid);承诺;--如果成功,则提交该功能。如果其他人失败,则异常将回滚转换。回滚;结束;。/
4。添加采样变压器。这样做的原因是,只向SQLExecutor发送一个功能,该功能将结束版本化表上的编辑会话。因为SQLExecutor将为每个功能执行,在第一个功能之后结束编辑会话,我们不需要发送多个功能。参数设置如下
5。添加FeatureHolder变压器。这仅用于防止最后一个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_分隔符/
开始插入C129979槽钢EVW
(第1列,第2列,第3列…)
价值观
(值1,值2,值3…);
承诺;
异常——只需要异常来处理错误
当其他人回退时;
结束;
/
?2019安全亚搏在线软件公司|合法的