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的方式.下面将主要讨论一下后者的备份与恢复. ...
随机推荐
- 安全性测试入门:DVWA系列研究(一):Brute Force暴力破解攻击和防御
写在篇头: 随着国内的互联网产业日臻成熟,软件质量的要求越来越高,对测试团队和测试工程师提出了种种新的挑战. 传统的行业现象是90%的测试工程师被堆积在基本的功能.系统.黑盒测试,但是随着软件测试整体 ...
- 非常贴心的轮子 FreeSql
FreeSql 项目从2018年11月28日开发至今,版本已发布至 v0.3.12,版本规则:年数-月-日-当日版本号.目前主要包括 FreeSql.FreeSql.Repository 两个项目的维 ...
- 对EF的封装
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- 【MQ】消息队列及常见MQ比较
一.什么是消息队列 我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用.消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰. ...
- C语言超级搞笑的代码,冷笑话我们程序员也会讲的啊!
百年修得足下点击本文 欢迎来到"C语言基础"专题,今天我们放松一天,不学习知识,来看下大千世界的千奇百怪的C语言代码,你见过那些? 1.关于随机数这回事 这个随机数有点意思哦. 2 ...
- cesium 之地图贴地量算工具效果篇(附源码下载)
前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...
- windows本地安全策略实验-远程桌面连接锁定账户
windows本地安全策略实验-远程桌面连接锁定账户 实验环境: 服务端:Win7-1:10.10.10.136,开启远程桌面服务 客户端:win7-2:10.10.10.153 确保客户端和服务端能 ...
- 20171201 - macOS High Sierra 神级 bug
昨日亲测有效,macOS High Sierra 神级 bug,系统管理员 root 密码为空,输入就可以登录,具备最高权限. 让人不禁想象 Apple Software 怎么了,人才都流失了吗?
- cmake 入门实战
当你的程序只有一个源文件时,直接就可以用gcc命令编译它 g++ main.cc 这样会输出一个main.out https://www.hahack.com/codes/cmake/
- 八问WebSocket协议:为你快速解答WebSocket热门疑问
一.引言 WebSocket是一种比较新的协议,它是伴随着html5规范而生的,虽然还比较年轻,但大多主流浏览器都已经支持.它使用方面.应用广泛,已经渗透到前后端开发的各种场景中. 对http一问一答 ...