使用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 拷贝数据库的更多相关文章

  1. MySQL 拷贝数据库表方式备份,还原后提示 table xxx '' doesn`t exist

    MySQL很强大,支持直接拷贝数据库文件快速备份,那数据库文件在哪里呢? 打开MySQL的配置文件 my.ini,找到 datadir 节点,如 datadir="D:/Program Fi ...

  2. 看代码网备份|利用WebClient|eKing.CmdDownLoadDbBakOper|实现定时拷贝数据库备份文件到文件服务器

    摘要: 1.有两台服务器 (1)看代码网(记为A):内网IP:10.186.73.30 (2)文件服务器(记为B):内网IP:10.135.87.157 2.在A架设一个网站,端口8088(防火强设置 ...

  3. mongodb拷贝数据库copyDatabase()。实现释放磁盘空间的方法。

    下面我们一起来看看关于mongodb拷贝数据库copyDatabase().实现释放磁盘空间的方法,希望文章对各位同学会有所帮助. db.copyDatabase("from",& ...

  4. 拷贝数据库和VS项目

    2个项目的相似度比较大,在另一个的基础上做修改,不想从头再来,把数据库和项目如何克隆一份呢? 数据库复制:(SQLSERVER2008) 任务-备份数据库 然后还原到新建的数据库名下即可 VS项目复制 ...

  5. EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态

    本文目录 查看实体当前.原始和数据库值:DbEntityEntry 查看实体的某个属性值:GetValue<TValue>方法 拷贝DbPropertyValues到实体:ToObject ...

  6. MySQL 数据库的备份与恢复

    一.MySQL 常见的备份方式 1. 直接拷贝数据库文件(物理拷贝) 2. 使用 mysqldump 工具备份 3. 使用 mysqlhotcopy 工具备份 4. 使用 mysql 的主从同步复制, ...

  7. 生产环境中,数据库升级维护的最佳解决方案flyway

    官网:https://flywaydb.org/ 转载:http://casheen.iteye.com/blog/1749916 1.  引言 想到要管理数据库的版本,是在实际产品中遇到问题后想到的 ...

  8. Web项目使用Oracle.DataAccess.dll 类库连接oracle数据库

    首先我用的工具是oracle 32位免安装版+Oracle.DataAccess.dll 32位  文件版本4.121.1.0+vs2013 +win7 64位 Oracle.DataAccess.d ...

  9. sql server 2000,Log.LDF文件丢失,附加数据库失败的解决办法[转]

    SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式.下面将主要讨论一下后者的备份与恢复. ...

随机推荐

  1. 已实现乐观锁功能,FreeSql.DbContext 准备起航

    上回说到 FreeSql.DbContext 的规则,以及演示它的执行过程,可惜当时还不支持"乐观锁",对于更新数据来讲并不安全. FreeSql 核心库 v0.3.27 已提供乐 ...

  2. wGenerator代码生成工具

    由来 以前一直用window系列的操作系统,有不少可以用的代码生成工具,如:动软的代码生成器(.net),可以自定义模板,然后按需生成代码.后来用mac系统,发现好像没有什么太好用的生成工具,所以自己 ...

  3. PBFT概念与Go语言入门(Tendermint基础)

    Tendermint作为当前最知名且实用的PBFT框架,网上资料并不很多,而实现Tendermint和以太坊的Go语言,由于相对小众,也存在资料匮乏和模糊错漏的问题.本文简单介绍PBFT概念和Go语言 ...

  4. 结合JDK源码看设计模式——适配器模式

    定义: 将一个类的接口转换成客户期望的另外一个接口(重点理解适配的这两个字),使得接口不兼容的类可以一起工作适用场景: 已经存在的类,它的方法和需求不匹配的时候 在软件维护阶段考虑的设计模式 详解 首 ...

  5. [转]webstorm中js文件被识别成txt类型

    问题描述: webstorm中index.js文件被识别成txt格式,如下图. 原因: webstorm中js文件被识别成txt文件,原因在于txt类型识别了以当前js文件名命名的模式. 解决办法: ...

  6. java工作流引擎Jflow流程事件和流程节点事件设置

    流程实例的引入和设置 关键词: 开源工作流引擎  Java工作流开发  .net开源工作流引擎   流程事件 工作流节点事件 应用场景: 在一些复杂的业务逻辑流程中需要在某个节点或者是流程结束后做一些 ...

  7. 微信小程序之菜鸟选手入门教学(一)

    1. 小程序的优缺点优点:不需下载.卸载 使用方便缺点:嵌套在微信中,属于微信的子应用2. 使用的技术实际上是Hybrid技术的应用Hybrid App (混合模式移动应用),使用网页语言和程序语言共 ...

  8. 处理安卓和ios当页面原生键盘弹出,输入框不显示

    $('input').on('click', function () { var target = this; // 使用定时器是为了让输入框上滑时更加自然 setTimeout(function() ...

  9. 解决 VS2019 打开 edmx 文件时没有 Diagram 视图的 Bug

    问题描述 安装 VS 2019 (版本:16.0.2)后,发现更新选项中已经没有 “Entity Framework 6.X 工具” 了,打开 .edmx 文件时,呈现的视图是 xml 视图. 解决方 ...

  10. 音频处理EQ的基本概念

     我们通常所说的人声,歌声以及乐声都是一个复合音,也就是由声音的基音和一系列的泛音所构成的.这些泛音都是基音频率的倍数,物理学中叫分音,电声学中叫谐波,音乐中则把它们称做泛音.可以说,泛音对音色的特性 ...