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的方式.下面将主要讨论一下后者的备份与恢复. ...
随机推荐
- Spring Boot入门(四):开发Web Api接口常用注解总结
本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 在程序员的日常工作中,Web开发应该是占比很重的一部分,至少我工作以来,开发的系统基本都是Web端访问的 ...
- 5.3Role和Claims授权「深入浅出ASP.NET Core系列」
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注. Role授权 这是一种Asp.Net常用的传统的授权方法,当我们在 ...
- 微信小程序echarts层级太高
项目中因为需求,底部的tab导航栏是自己写的,在开发者工具中一切正常:但是在真机上页面滑动时,echarts的层级比tab高,调过两者的z-index后仍然如此. 经过查找后发现cover-view和 ...
- h5实现实时时钟
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <meta nam ...
- SQL过滤字符后手工注入漏洞测试(第1题)
https://www.mozhe.cn/bug/detail/a1diUUZsa3ByMkgrZnpjcWZOYVEyUT09bW96aGUmozhe 分析题目,属于时间盲注,这种情况,通常使用sq ...
- 开源ERP Odoo仓存功能模块深度应用(一)
基本功能 库位 库位是一个逻辑存货区,可以是一个物理库区,可以是一个货架.货架上的一个货位.库位可以有子库位 库位有虚拟库位和实际库位,实际库位是实际存放货物的库位,虚拟库位是因复式库存记账而虚构的库 ...
- OGG-02803 Encountered a Data Guard role transition
告警提示其实已经很明显了OGG-02803 Encountered a Data Guard role transition. Alter Extract to SCN 15,756,246 and ...
- Linux 操作系统基础
list : ls 目录: 文件,路径映射. ls : -l : lang 长格式, 显示完整信息. 文件类型: -: 普通文件(f) d: 目录文件 b: 块设备文件(block) c: 字块设备文 ...
- Windows10文件目录下添加 Shift+右键打开管理员Powershell窗口
背景(可略过) 目前在调试 Python 程序,遇到了一个问题:当程序中包含多线程时,使用 IDLE 运行是不会执行多线程的语句的,在网上一顿搜罗了解到这种情况可以换成在命令行下执行.好像用 PyCh ...
- SQLServer之修改用户自定义数据库用户
修改用户自定义数据库用户注意事项 默认架构将是服务器为此数据库用户解析对象名时将搜索的第一个架构. 除非另外指定,否则默认架构将是此数据库用户创建的对象所属的架构. 如果用户具有默认架构,则将使用默认 ...