使用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. Asp.Net Core 轻松学-经常使用异步的你,可能需要看看这个文章

    前言 事情的起因是由于一段简单的数据库连接代码引起,这段代码从语法上看,是没有任何问题:但是就是莫名其妙的报错了,这段代码极其简单,就是打开数据库连接,读取一条记录,然后立即更新到数据库中.但是,惨痛 ...

  2. JavaScript面试的完美指南(开发者视角)

    为了说明 JS 面试的复杂性,首先,请尝试给出以下结果: onsole.log(2.0 == "2" == new Boolean(true) == "1") ...

  3. jQuery拼图小游戏

    jQuery拼图小游戏 最后样式 核心代码部分 <script type="text/javascript" > $(function () { $("td& ...

  4. mybatis小结

    mybatis是Apache的一个开源项目ibatis,后由Google管理,目前在github上.MyBatis 是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架. 一.mybatis解决 ...

  5. arcgis api 3.x for js 入门开发系列批量叠加 zip 压缩 SHP 图层优化篇(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  6. iOS----------学习路线思维导图

    UI相关 Runtime OC特性 内存管理 Block 多线程 Runloop 网络相关 设计模式 架构 算法 第三方库

  7. 物理dataguard 正常切换 脚色转换,switchover_status 状态改变

    正常切换切换前: 主库:SQL> select DATABASE_ROLE from v$database;DATABASE_ROLE----------------PRIMARY SQL> ...

  8. SQL SERVER 查看所有存储过程或视图里 包含某个关键字的查询语句

    SELECT name, type_desc FROM sys.all_sql_modules s INNER JOIN sys.all_objects o ON s.object_id = o.ob ...

  9. 【原】无脑操作:Chrome浏览器安装Vue.js devtool

    学习Vue.js时,Chrome浏览器安装Vue.js devtool能很方便的查看Vue对象.组件.事件等. 本文以Chrome浏览器插件Vue.js devtools_3.1.2_0.crx的安装 ...

  10. ABP学习笔记总汇

    首先立下一个目标,未来一段时间开始学习ABP. 先立一个flag.之后会再次更新目录和文章连接 目录 1.ABP学习笔记(1)-使用mysql