Liệt kê tất cả các Cơ sở dữ liệu địa lý doanh nghiệp và các lớp tính năng cũng như Siêu dữ liệu của chúng
#Tập lệnh này hữu ích cho việc kiểm tra siêu dữ liệu. Tập lệnh có thể chạy trên nhiều cơ sở dữ liệu địa lý enterprise và sẽ tạo tệp CSV đầu ra với các cột sau: 'Cơ sở dữ liệu địa lý', 'Tập dữ liệu tính năng', 'Lớp đối tượng', 'Tham chiếu không gian', 'Đếm hàng', 'Số cột', 'Tiêu đề siêu dữ liệu', 'Mô tả siêu dữ liệu', 'Tóm tắt siêu dữ liệu', 'Tín dụng siêu dữ liệu', 'Truy cập siêu dữ liệu' Ràng buộc'.
Để sử dụng tập lệnh này, bạn cần thay đổi Dòng 19 để trỏ đến tệp kết nối SDE của mình.
import csv
import os
from arcpy import Describe
from arcpy import env
from arcpy import GetCount_management
from arcpy import ListDatasets
from arcpy import ListFeatureClasses
from arcpy import ListFields
from arcpy import metadata as md
# the output CSV file name
output_csv_file = 'enterprise_gdbs_results.csv'
# or use this to make the output CSV file name the same as the script name
# output_csv_file = os.path.basename(__file__).replace('.py','.csv')
# change this path to use your SDE connection files
sde_connection_files = 'c:/gis/sde_connection_files'
with open(output_csv_file,'w',newline='') as csv_file:
csv_writer = csv.writer(csv_file, delimiter=',')
column_headers = [
'Geodatabase', 'Feature Dataset', 'Feature Class',
'Spatial Reference', 'Row Count', 'Column Count',
'Metadata Title', 'Metadata Description', 'Metadata Summary',
'Metadata Credits', 'Metadata Access Constraints'
]
csv_writer.writerow(column_headers)
for (folder, dirs, files) in os.walk(sde_connection_files):
for file in files:
if(not file.startswith('_') and file.endswith('.sde')):
geodatabase = file.split('@')[1]
wksp = os.path.join(folder,file)
env.workspace = wksp
datasets = ListDatasets(feature_type='feature')
datasets = [''] + datasets if datasets is not None else []
for dataset in datasets:
for feature_class in ListFeatureClasses(dataset):
desc = Describe(feature_class)
spatial_reference = desc.SpatialReference.factoryCode
count = GetCount_management(feature_class)[0]
column_count = len(ListFields(feature_class))
metadata = md.Metadata(feature_class)
row = [
geodatabase,dataset,feature_class,
spatial_reference,count,column_count,
metadata.title,metadata.description,
metadata.summary,metadata.credits,
metadata.accessConstraints
]
print(row)
csv_writer.writerow(row)