1、需求描述:
1)批量的操作SDE數據庫表
2)保險起見操作前先備份
3)操作遵循一定的規則
2、以下代碼實現以下功能:
1)查找SDE數據庫中表名的以SDE.hb_01、SDE.hb_02開頭的表
2)將查找到的表備份爲shp文件
3)查找每給表中滿足固定條件的行,然後刪除
4)如果有異常,輸出異常信息
import arcpy
import os,sys,time
sdeConnStr = 'Database Connections/sde.sde'
bakPath = r'D:\gisDataBak'
if name == '__main__':
arcpy.env.workspace = sdeConnStr
tbList = arcpy.ListFeatureClasses()
if not type(tbList):
return
try:
#創建備份目錄
date = time.strftime(r'%Y%m%d')
bakPath = os.path.join(bakPath,date)
if(os.path.exists(bakPath)){
os.mkdir(bakPath)
}
#遍歷sde圖層
for sdeLayer in tbList:
#刪除數據
if (sdeLayer.startswith('SDE.hb_01') or (sdeLayer.startswith('SDE.hb_02')):
#先備份
bakPath = os.path.join(bakPath, sdeLayer + '_bak.shp')
arcpy.CopyFeatures_management(sdeLayer,exp)
#查詢
sqlExpStr = "OBJCODE like '470846%'"
arcpy.SelectLayerByAttribute_management(sdeLayer,"NEW_SELECTION", sqlExpStr)
#刪除選擇行
count = int(arcpy.GetCount_management(sdeLayer).getOutput(0))
if count> 0:
arcpy.DeleteRows_management()
except Exception as e:
import traceback
import sys
tb = sys.exc_info()[2]
print("Line {0}".format(tb.tb_lineno))
print(e.message)
可以以此爲基礎,調整操作方法,執行其它對SDE數據庫的批量操作