Mais

Criando um backup FGDB semanal do ArcSDE?

Criando um backup FGDB semanal do ArcSDE?


Preciso criar um script que copie os dados de parcelas de nosso condado, mantidos em SDE / SQL, para um arquivo de geodatabase. Este script será executado como uma tarefa agendada no fim de semana. Qual ferramenta GP você recomenda para este processo? Considere que nosso esquema está 'gravado em pedra' e não temos classes de relacionamento para manter. Testei CopyFeatures_management e FeatureClassToFeatureClass_conversion. Ambos funcionam. FC para FC é um pouco mais rápido, mas a velocidade não é realmente um problema. Em teoria, CopyFeatures, executado com Overwrite = True, corresponde ao nosso fluxo de trabalho, pois não estamos convertendo para um shapefile ou cobertura. FeatureClassToGeodatabase_conversion pode ser a melhor escolha, pois existem cerca de 25 classes de recursos que precisam ser copiadas para o mesmo FGDB.

Além disso, preciso garantir que a máquina que está executando o script seja capaz de se conectar aos dados SDE. Estamos usando o esquema DBO com autenticação do sistema operacional. O script provavelmente será executado pelo mesmo servidor que hospeda nosso SDE. Alguém tem experiência com um cenário semelhante?


Eu usei este script no passado (Aviso, não copia nenhuma topologia, classes de relacionamento, etc):

import arcpy, os def ExportSDEtoGDB (sde_gdb, out_loc, out_name, gdb_type = "Arquivo Geodatabase"): "Cria uma cópia de um SDE Geodatabase para um Arquivo ou Personal Geodatabase. Isso irá copiar todas as tabelas, rasters e conjuntos de dados de características. As classes de recursos permanecerão dentro de seus respectivos conjuntos de dados de recursos no novo geodatabase. Parâmetros: sde_gdb: SDE Database out_loc: pasta de saída para o novo geodatabase out_name: Nome do novo geodatabase gdb_type: Tipo de geodatabase. O padrão é 'File Geodatabase "# Create GDB if gdb_type == 'Arquivo Geodatabase': gdb = str (arcpy.CreateFileGDB_management (out_loc, out_name, 'CURRENT'). GetOutput (0)) else: gdb = str (arcpy.CreatePersonalGDB_management (out_loc, out_name, 'CURRENT'). GetOutput ( 0)) # loop thru sde e copie arcpy.env.workspace = sde_gdb para a tabela em arcpy.ListTables (): t_name = table.split ('.') [- 1] arcpy.TableToGeodatabase_conversion (table, gdb) para raster em arcpy.ListRasters (): arcpy.CopyRaster_management (raster, os.path.join (gdb, raster)) para featd em arcpy.ListDatasets ('*', 'Feature'): arcpy.env.workspace = fd = os.path.join (sde_gdb, featd) fd_name = featd.split ('.') [- 1] sr = arcpy. Describe (fd) .spatialReference gdb_fd = str (arcpy.CreateFeatureDataset_management (gdb, fd_name, sr) .getOutput (0)) arcpy.AddMessage ('Conjunto de recursos criado:% s'% fd_name) para fc em arcpy.ListFeatureClasses (): fc_name = fc.split ('.') [- 1] arcpy.FeatureClassToFeatureClass_conversion (fc, gdb_fd, fc_name) arcpy.AddMessage ('Copiou todas as classes de recurso de:% s  n  n'% featd)

Você pode considerar a exportação para um documento de espaço de trabalho XML por meio da ferramenta Export XML Workspace Document GP.

Você pode inserir um geodatabase e, em seguida, todos os objetos, incluindo os comportamentais, serão exportados. O problema com recursos de cópia e FC para FC é que eles deixam os objetos comportamentais para trás (ou seja, redes, topologia, etc.). Pode não ser relevante para você neste momento, mas ainda assim vale a pena mencionar para referência futura. Além disso, é uma ferramenta para toda a geodatabase em vez de percorrer todos os seus FCs, um de cada vez.

Quanto à execução do script, contanto que a conta de usuário usada tenha os privilégios apropriados para ler os dados, você está pronto para prosseguir (ou seja, a conta não precisa necessariamente fazer parte do DBO). Em seu script, é melhor apenas apontar para seu arquivo de conexão.


Assista o vídeo: How to create and add Enterprise Geodatabase SQL Server ArcMap, two ways