ArcPy 拷贝数据库
使用Python脚本进行图形数据库的拷贝。
原始帖子地址:https://www.2cto.com/database/201302/187391.html
整理Python代码:
- # -*- coding: utf-8 -*-
- # nightroad
- import arcpy, os, string,sys
- reload(sys)
- sys.setdefaultencoding( "utf-8" )
- def CopyDatasets(start_db,end_db,num):
- try:
- #Set workspaces
- arcpy.env.workspace = start_db
- wk2 = end_db
- datasetList = arcpy.ListDatasets()
- #for feature classes within datasets
- for dataset in datasetList:
- print "Reading: {0}".format(dataset)
- name = arcpy.Describe(dataset)
- new_data=name.name[num:]
- if (not arcpy.Exists(wk2 + os.sep + new_data)):
- arcpy.Copy_management(dataset, wk2 + os.sep + new_data)
- print "Completed copy on {0}".format(new_data)
- else:
- print "Dataset {0} already exists in the end_db so skipping".format(new_data) #如果有同名的就Skip
- #Clear memory
- del dataset
- except Exception as e:
- arcpy.AddError(e.message)
- def CopyFeatureClasses(start_db,end_db,num):
- try:
- #Set workspaces
- arcpy.env.workspace = start_db
- wk2 = end_db
- datasetList = arcpy.ListDatasets()
- #for feature classes within datasets
- for fc in arcpy.ListFeatureClasses():
- print "Reading: {0}".format(fc)
- name = arcpy.Describe(fc)
- new_data=name.name[num:]
- if arcpy.Exists(wk2 + os.sep + new_data)==False:
- arcpy.Copy_management(fc, wk2 + os.sep + new_data)
- print "Completed copy on {0}".format(new_data)
- else:
- print "Feature class {0} already exists in the end_db so skipping".format(new_data)
- #Clear memory
- del fc
- except Exception as e:
- arcpy.AddError(e.message)
- def CopyTables(start_db,end_db,num):
- try:
- #Set workspaces
- arcpy.env.workspace = start_db
- wk2 = end_db
- datasetList = arcpy.ListDatasets()
- #for feature classes within datasets
- for table in arcpy.ListTables():
- print "Reading: {0}".format(table)
- name = arcpy.Describe(table)
- new_data=name.name[num:]
- if arcpy.Exists(wk2 + os.sep + new_data)==False:
- arcpy.Copy_management(table, wk2 + os.sep + new_data)
- print "Completed copy on {0}".format(new_data)
- else:
- print "Table {0} already exists in the end_db so skipping".format(new_data)
- #Clear memory
- del table
- except Exception as e:
- arcpy.AddError(e.message)
- if __name__== "__main__":
- start_db =r'C:\Users\nightroad\AppData\Roaming\ESRI\Desktop10.2\ArcCatalog\test.sde' #源工作空间
- end_db = r'E:\Test\Test.gdb' #目的工作空间
- num =0 # (例如: sde.sde. is 8)
- CopyDatasets(start_db,end_db,num)
- CopyFeatureClasses(start_db,end_db,num)
- CopyTables(start_db,end_db,num)
Python脚本的目的就是将获得源工作空间和目的工作空间,里面有一个Num的选择,根据数据库不一样来记录要素类或者数据集前的字符串:
SQL Server:sde.sde.featureclass或者sde.dbo.featureclass
那么只记录sde.sde.(sde.dbo.)一共8个字符,num=8
Oracle:test.featureclass
那么只记录test.一共5个字符串,num=5
FileGDB,没有前缀,num=0
ArcPy 拷贝数据库的更多相关文章
- MySQL 拷贝数据库表方式备份,还原后提示 table xxx '' doesn`t exist
MySQL很强大,支持直接拷贝数据库文件快速备份,那数据库文件在哪里呢? 打开MySQL的配置文件 my.ini,找到 datadir 节点,如 datadir="D:/Program Fi ...
- 看代码网备份|利用WebClient|eKing.CmdDownLoadDbBakOper|实现定时拷贝数据库备份文件到文件服务器
摘要: 1.有两台服务器 (1)看代码网(记为A):内网IP:10.186.73.30 (2)文件服务器(记为B):内网IP:10.135.87.157 2.在A架设一个网站,端口8088(防火强设置 ...
- mongodb拷贝数据库copyDatabase()。实现释放磁盘空间的方法。
下面我们一起来看看关于mongodb拷贝数据库copyDatabase().实现释放磁盘空间的方法,希望文章对各位同学会有所帮助. db.copyDatabase("from",& ...
- 拷贝数据库和VS项目
2个项目的相似度比较大,在另一个的基础上做修改,不想从头再来,把数据库和项目如何克隆一份呢? 数据库复制:(SQLSERVER2008) 任务-备份数据库 然后还原到新建的数据库名下即可 VS项目复制 ...
- EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态
本文目录 查看实体当前.原始和数据库值:DbEntityEntry 查看实体的某个属性值:GetValue<TValue>方法 拷贝DbPropertyValues到实体:ToObject ...
- MySQL 数据库的备份与恢复
一.MySQL 常见的备份方式 1. 直接拷贝数据库文件(物理拷贝) 2. 使用 mysqldump 工具备份 3. 使用 mysqlhotcopy 工具备份 4. 使用 mysql 的主从同步复制, ...
- 生产环境中,数据库升级维护的最佳解决方案flyway
官网:https://flywaydb.org/ 转载:http://casheen.iteye.com/blog/1749916 1. 引言 想到要管理数据库的版本,是在实际产品中遇到问题后想到的 ...
- Web项目使用Oracle.DataAccess.dll 类库连接oracle数据库
首先我用的工具是oracle 32位免安装版+Oracle.DataAccess.dll 32位 文件版本4.121.1.0+vs2013 +win7 64位 Oracle.DataAccess.d ...
- sql server 2000,Log.LDF文件丢失,附加数据库失败的解决办法[转]
SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式.下面将主要讨论一下后者的备份与恢复. ...
随机推荐
- Asp.Net Core 轻松学-经常使用异步的你,可能需要看看这个文章
前言 事情的起因是由于一段简单的数据库连接代码引起,这段代码从语法上看,是没有任何问题:但是就是莫名其妙的报错了,这段代码极其简单,就是打开数据库连接,读取一条记录,然后立即更新到数据库中.但是,惨痛 ...
- JavaScript面试的完美指南(开发者视角)
为了说明 JS 面试的复杂性,首先,请尝试给出以下结果: onsole.log(2.0 == "2" == new Boolean(true) == "1") ...
- jQuery拼图小游戏
jQuery拼图小游戏 最后样式 核心代码部分 <script type="text/javascript" > $(function () { $("td& ...
- mybatis小结
mybatis是Apache的一个开源项目ibatis,后由Google管理,目前在github上.MyBatis 是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架. 一.mybatis解决 ...
- arcgis api 3.x for js 入门开发系列批量叠加 zip 压缩 SHP 图层优化篇(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
- iOS----------学习路线思维导图
UI相关 Runtime OC特性 内存管理 Block 多线程 Runloop 网络相关 设计模式 架构 算法 第三方库
- 物理dataguard 正常切换 脚色转换,switchover_status 状态改变
正常切换切换前: 主库:SQL> select DATABASE_ROLE from v$database;DATABASE_ROLE----------------PRIMARY SQL> ...
- SQL SERVER 查看所有存储过程或视图里 包含某个关键字的查询语句
SELECT name, type_desc FROM sys.all_sql_modules s INNER JOIN sys.all_objects o ON s.object_id = o.ob ...
- 【原】无脑操作:Chrome浏览器安装Vue.js devtool
学习Vue.js时,Chrome浏览器安装Vue.js devtool能很方便的查看Vue对象.组件.事件等. 本文以Chrome浏览器插件Vue.js devtools_3.1.2_0.crx的安装 ...
- ABP学习笔记总汇
首先立下一个目标,未来一段时间开始学习ABP. 先立一个flag.之后会再次更新目录和文章连接 目录 1.ABP学习笔记(1)-使用mysql