使用Python脚本进行图形数据库的拷贝。

原始帖子地址:https://www.2cto.com/database/201302/187391.html

整理Python代码:

  1. # -*- coding: utf-8 -*-
  2. # nightroad
  3. import arcpy, os, string,sys
  4. reload(sys)
  5. sys.setdefaultencoding( "utf-8" )
  6.  
  7. def CopyDatasets(start_db,end_db,num):
  8. try:
  9. #Set workspaces
  10. arcpy.env.workspace = start_db
  11. wk2 = end_db
  12. datasetList = arcpy.ListDatasets()
  13. #for feature classes within datasets
  14. for dataset in datasetList:
  15. print "Reading: {0}".format(dataset)
  16. name = arcpy.Describe(dataset)
  17. new_data=name.name[num:]
  18. if (not arcpy.Exists(wk2 + os.sep + new_data)):
  19. arcpy.Copy_management(dataset, wk2 + os.sep + new_data)
  20. print "Completed copy on {0}".format(new_data)
  21. else:
  22. print "Dataset {0} already exists in the end_db so skipping".format(new_data) #如果有同名的就Skip
  23. #Clear memory
  24. del dataset
  25. except Exception as e:
  26. arcpy.AddError(e.message)
  27.  
  28. def CopyFeatureClasses(start_db,end_db,num):
  29. try:
  30. #Set workspaces
  31. arcpy.env.workspace = start_db
  32. wk2 = end_db
  33. datasetList = arcpy.ListDatasets()
  34. #for feature classes within datasets
  35. for fc in arcpy.ListFeatureClasses():
  36. print "Reading: {0}".format(fc)
  37. name = arcpy.Describe(fc)
  38. new_data=name.name[num:]
  39. if arcpy.Exists(wk2 + os.sep + new_data)==False:
  40. arcpy.Copy_management(fc, wk2 + os.sep + new_data)
  41. print "Completed copy on {0}".format(new_data)
  42. else:
  43. print "Feature class {0} already exists in the end_db so skipping".format(new_data)
  44. #Clear memory
  45. del fc
  46. except Exception as e:
  47. arcpy.AddError(e.message)
  48.  
  49. def CopyTables(start_db,end_db,num):
  50. try:
  51. #Set workspaces
  52. arcpy.env.workspace = start_db
  53. wk2 = end_db
  54. datasetList = arcpy.ListDatasets()
  55. #for feature classes within datasets
  56. for table in arcpy.ListTables():
  57. print "Reading: {0}".format(table)
  58. name = arcpy.Describe(table)
  59. new_data=name.name[num:]
  60. if arcpy.Exists(wk2 + os.sep + new_data)==False:
  61. arcpy.Copy_management(table, wk2 + os.sep + new_data)
  62. print "Completed copy on {0}".format(new_data)
  63. else:
  64. print "Table {0} already exists in the end_db so skipping".format(new_data)
  65. #Clear memory
  66. del table
  67. except Exception as e:
  68. arcpy.AddError(e.message)
  69.  
  70. if __name__== "__main__":
  71. start_db =r'C:\Users\nightroad\AppData\Roaming\ESRI\Desktop10.2\ArcCatalog\test.sde' #源工作空间
  72. end_db = r'E:\Test\Test.gdb' #目的工作空间
  73. num =0 # (例如: sde.sde. is 8)
  74. CopyDatasets(start_db,end_db,num)
  75. CopyFeatureClasses(start_db,end_db,num)
  76. 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. .NET Core IdentityServer4实战 第三章-使用EntityFramework Core进行持久化配置

    内容:本文带大家使用IdentityServer4进行使用使用EntityFramework Core进行配置和操作数据 作者:zara(张子浩) 欢迎分享,但需在文章鲜明处留下原文地址. 前两章内容 ...

  2. 强化学习(十六) 深度确定性策略梯度(DDPG)

    在强化学习(十五) A3C中,我们讨论了使用多线程的方法来解决Actor-Critic难收敛的问题,今天我们不使用多线程,而是使用和DDQN类似的方法:即经验回放和双网络的方法来改进Actor-Cri ...

  3. 关于vue使用form上传文件

    在vue中使用form表单上传文件文件的时候出现了一些问题,获取文件的时候一直返回null, 解决之后又出现发送到后台的file文件后台显示为空,解决源码 <template> <d ...

  4. SQL Server内幕之数据页

    数据页是包含已添加到数据库表中的用户数据的结构. 如前所述, 数据页有三种, 每个都以不同的格式存储数据. SQL server 有行内数据页.行溢出数据页和 LOB 数据页. 与 SQL serve ...

  5. 微信小程序 人脸识别登陆模块

    微信小程序---人脸识别登陆的实现 关键词:微信小程序 人脸识别 百度云接口 前言 这是一篇关于一个原创微信小程序开发过程的原创文章.涉及到的核心技术是微信小程序开发方法和百度云人脸识别接口.小程序的 ...

  6. python3 函数传参练习 全局变量与局部变量 的理解

    额 还是继续抄一边NLP第二条: 2.一个人不能控制另外一个人   一个人不能改变另外一个人,一个人只能改变自己. 每个人的信念,价值观,规条系统只对本人有效,不应强求别人接守. 改变自己,别人才会有 ...

  7. 巧妙地使用typora编辑有道云笔记

    设置方法 找到有道云笔记本地保存路径: 找到有道云笔记的保存的路径:启动有道云 - 设置 - 有道云笔记(本地文件) - 打开文件夹 使用typora打开有道云笔记目录: typora 菜单栏 - O ...

  8. Django【部署】uwsgi+nginx

    uwsgi 遵循wsgi协议的web服务器 uwsgi的安装 pip install uwsgi uwsgi的配置 项目部署时,需要把settings.py文件夹下的: DEBUG = FALSE A ...

  9. React教程(一) React介绍与搭建

    React的介绍: React来自于Facebook公司的开源项目 React 可以开发单页面应用 spa(单页面应用) react 组件化模块化 开发模式 React通过对DOM的模拟(虚拟dom) ...

  10. 细说mysql索引

    本文从如何建立mysql索引以及介绍mysql的索引类型,再讲mysql索引的利与弊,以及建立索引时需要注意的地方 首先:先假设有一张表,表的数据有10W条数据,其中有一条数据是nickname='c ...