Recently, we've been having issues getting our python script to copy our enterprise geodatabase to a new fresh file geodatabase. When it's copying one of the feature data sets to the local file geodatabase it generates an error saying a table already exists and skips over the entire data set which holds 90% of our data and onto the next feature data set. Does anyone have a working python script that exports an entire enterprise geodatabase?
<SPAN class="keyword token">import</SPAN> time<SPAN class="punctuation token">,</SPAN> os<SPAN class="punctuation token">,</SPAN> datetime<SPAN class="punctuation token">,</SPAN> sys<SPAN class="punctuation token">,</SPAN> logging<SPAN class="punctuation token">,</SPAN> logging<SPAN class="punctuation token">.</SPAN>handlers<SPAN class="punctuation token">,</SPAN> shutil<SPAN class="punctuation token">,</SPAN> traceback
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="comment token">########################## user defined functions ##############################</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">getDatabaseItemCount</SPAN><SPAN class="punctuation token">(</SPAN>workspace<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
log <SPAN class="operator token">=</SPAN> logging<SPAN class="punctuation token">.</SPAN>getLogger<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"script_log"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="string token">"""returns the item count in provided database"""</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> workspace
feature_classes <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Compiling a list of items in {0} and getting count."</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>workspace<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> dirpath<SPAN class="punctuation token">,</SPAN> dirnames<SPAN class="punctuation token">,</SPAN> filenames <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>Walk<SPAN class="punctuation token">(</SPAN>workspace<SPAN class="punctuation token">,</SPAN>datatype<SPAN class="operator token">=</SPAN><SPAN class="string token">"Any"</SPAN><SPAN class="punctuation token">,</SPAN>type<SPAN class="operator token">=</SPAN><SPAN class="string token">"Any"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> filename <SPAN class="keyword token">in</SPAN> filenames<SPAN class="punctuation token">:</SPAN>
feature_classes<SPAN class="punctuation token">.</SPAN>append<SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>dirpath<SPAN class="punctuation token">,</SPAN> filename<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"There are a total of {0} items in the database"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>len<SPAN class="punctuation token">(</SPAN>feature_classes<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">return</SPAN> feature_classes<SPAN class="punctuation token">,</SPAN> len<SPAN class="punctuation token">(</SPAN>feature_classes<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">replicateDatabase</SPAN><SPAN class="punctuation token">(</SPAN>dbConnection<SPAN class="punctuation token">,</SPAN> targetGDB<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
log <SPAN class="operator token">=</SPAN> logging<SPAN class="punctuation token">.</SPAN>getLogger<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"script_log"</SPAN><SPAN class="punctuation token">)</SPAN>
startTime <SPAN class="operator token">=</SPAN> time<SPAN class="punctuation token">.</SPAN>time<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Exists<SPAN class="punctuation token">(</SPAN>dbConnection<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
featSDE<SPAN class="punctuation token">,</SPAN>cntSDE <SPAN class="operator token">=</SPAN> getDatabaseItemCount<SPAN class="punctuation token">(</SPAN>dbConnection<SPAN class="punctuation token">)</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Geodatabase being copied: %s -- Feature Count: %s"</SPAN> <SPAN class="operator token">%</SPAN><SPAN class="punctuation token">(</SPAN>dbConnection<SPAN class="punctuation token">,</SPAN> cntSDE<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Exists<SPAN class="punctuation token">(</SPAN>targetGDB<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
featGDB<SPAN class="punctuation token">,</SPAN>cntGDB <SPAN class="operator token">=</SPAN> getDatabaseItemCount<SPAN class="punctuation token">(</SPAN>targetGDB<SPAN class="punctuation token">)</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Old Target Geodatabase: %s -- Feature Count: %s"</SPAN> <SPAN class="operator token">%</SPAN><SPAN class="punctuation token">(</SPAN>targetGDB<SPAN class="punctuation token">,</SPAN> cntGDB<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
shutil<SPAN class="punctuation token">.</SPAN>rmtree<SPAN class="punctuation token">(</SPAN>targetGDB<SPAN class="punctuation token">)</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Deleted Old %s"</SPAN> <SPAN class="operator token">%</SPAN><SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>split<SPAN class="punctuation token">(</SPAN>targetGDB<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">except</SPAN> Exception <SPAN class="keyword token">as</SPAN> e<SPAN class="punctuation token">:</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN>e<SPAN class="punctuation token">)</SPAN>
GDB_Path<SPAN class="punctuation token">,</SPAN> GDB_Name <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>split<SPAN class="punctuation token">(</SPAN>targetGDB<SPAN class="punctuation token">)</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Now Creating New %s"</SPAN> <SPAN class="operator token">%</SPAN><SPAN class="punctuation token">(</SPAN>GDB_Name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CreateFileGDB_management<SPAN class="punctuation token">(</SPAN>GDB_Path<SPAN class="punctuation token">,</SPAN> GDB_Name<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> dbConnection
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
datasetList <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>Describe<SPAN class="punctuation token">(</SPAN>a<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>name <SPAN class="keyword token">for</SPAN> a <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListDatasets<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">except</SPAN> Exception<SPAN class="punctuation token">,</SPAN> e<SPAN class="punctuation token">:</SPAN>
datasetList <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN>e<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
featureClasses <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>Describe<SPAN class="punctuation token">(</SPAN>a<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>name <SPAN class="keyword token">for</SPAN> a <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListFeatureClasses<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">except</SPAN> Exception<SPAN class="punctuation token">,</SPAN> e<SPAN class="punctuation token">:</SPAN>
featureClasses <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN>e<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
tables <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>Describe<SPAN class="punctuation token">(</SPAN>a<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>name <SPAN class="keyword token">for</SPAN> a <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListTables<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">except</SPAN> Exception<SPAN class="punctuation token">,</SPAN> e<SPAN class="punctuation token">:</SPAN>
tables <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN>e<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Compiles a list of the previous three lists to iterate over</SPAN>
allDbData <SPAN class="operator token">=</SPAN> datasetList <SPAN class="operator token">+</SPAN> featureClasses <SPAN class="operator token">+</SPAN> tables
<SPAN class="keyword token">for</SPAN> sourcePath <SPAN class="keyword token">in</SPAN> allDbData<SPAN class="punctuation token">:</SPAN>
targetName <SPAN class="operator token">=</SPAN> sourcePath<SPAN class="punctuation token">.</SPAN>split<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'.'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN>
targetPath <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>targetGDB<SPAN class="punctuation token">,</SPAN> targetName<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> <SPAN class="operator token">not</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Exists<SPAN class="punctuation token">(</SPAN>targetPath<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Attempting to Copy %s to %s"</SPAN> <SPAN class="operator token">%</SPAN><SPAN class="punctuation token">(</SPAN>targetName<SPAN class="punctuation token">,</SPAN> targetPath<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>Copy_management<SPAN class="punctuation token">(</SPAN>sourcePath<SPAN class="punctuation token">,</SPAN> targetPath<SPAN class="punctuation token">)</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Finished copying %s to %s"</SPAN> <SPAN class="operator token">%</SPAN><SPAN class="punctuation token">(</SPAN>targetName<SPAN class="punctuation token">,</SPAN> targetPath<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">except</SPAN> Exception <SPAN class="keyword token">as</SPAN> e<SPAN class="punctuation token">:</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Unable to copy %s to %s"</SPAN> <SPAN class="operator token">%</SPAN><SPAN class="punctuation token">(</SPAN>targetName<SPAN class="punctuation token">,</SPAN> targetPath<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN>e<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"%s already exists....skipping....."</SPAN> <SPAN class="operator token">%</SPAN><SPAN class="punctuation token">(</SPAN>targetName<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
featGDB<SPAN class="punctuation token">,</SPAN>cntGDB <SPAN class="operator token">=</SPAN> getDatabaseItemCount<SPAN class="punctuation token">(</SPAN>targetGDB<SPAN class="punctuation token">)</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Completed replication of %s -- Feature Count: %s"</SPAN> <SPAN class="operator token">%</SPAN><SPAN class="punctuation token">(</SPAN>dbConnection<SPAN class="punctuation token">,</SPAN> cntGDB<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN>"<SPAN class="punctuation token">{</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">}</SPAN> does <SPAN class="operator token">not</SPAN> exist <SPAN class="operator token">or</SPAN> <SPAN class="keyword token">is</SPAN> <SPAN class="operator token">not</SPAN> supported! \
Please check the database path <SPAN class="operator token">and</SPAN> <SPAN class="keyword token">try</SPAN> again<SPAN class="punctuation token">.</SPAN>"<SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>dbConnection<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#####################################################################################</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">formatTime</SPAN><SPAN class="punctuation token">(</SPAN>x<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
minutes<SPAN class="punctuation token">,</SPAN> seconds_rem <SPAN class="operator token">=</SPAN> divmod<SPAN class="punctuation token">(</SPAN>x<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">60</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> minutes <SPAN class="operator token">>=</SPAN> <SPAN class="number token">60</SPAN><SPAN class="punctuation token">:</SPAN>
hours<SPAN class="punctuation token">,</SPAN> minutes_rem <SPAN class="operator token">=</SPAN> divmod<SPAN class="punctuation token">(</SPAN>minutes<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">60</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">return</SPAN> <SPAN class="string token">"%02d:%02d:%02d"</SPAN> <SPAN class="operator token">%</SPAN> <SPAN class="punctuation token">(</SPAN>hours<SPAN class="punctuation token">,</SPAN> minutes_rem<SPAN class="punctuation token">,</SPAN> seconds_rem<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN>
minutes<SPAN class="punctuation token">,</SPAN> seconds_rem <SPAN class="operator token">=</SPAN> divmod<SPAN class="punctuation token">(</SPAN>x<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">60</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">return</SPAN> <SPAN class="string token">"00:%02d:%02d"</SPAN> <SPAN class="operator token">%</SPAN> <SPAN class="punctuation token">(</SPAN>minutes<SPAN class="punctuation token">,</SPAN> seconds_rem<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> __name__ <SPAN class="operator token">==</SPAN> <SPAN class="string token">"__main__"</SPAN><SPAN class="punctuation token">:</SPAN>
startTime <SPAN class="operator token">=</SPAN> time<SPAN class="punctuation token">.</SPAN>time<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
now <SPAN class="operator token">=</SPAN> datetime<SPAN class="punctuation token">.</SPAN>datetime<SPAN class="punctuation token">.</SPAN>now<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">############################### user variables #################################</SPAN>
<SPAN class="string token">'''change these variables to the location of the database being copied, the target
database location and where you want the log to be stored'''</SPAN>
logPath <SPAN class="operator token">=</SPAN> <SPAN class="string token">"C:/temp/Log"</SPAN>
databaseConnection <SPAN class="operator token">=</SPAN> r<SPAN class="string token">"C:\Users\jnmiller\AppData\Roaming\ESRI\Desktop10.6\ArcCatalog\SDE.sde"</SPAN>
<SPAN class="comment token">############################### logging items ###################################</SPAN>
<SPAN class="comment token"># Make a global logging object.</SPAN>
logName <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>logPath<SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">(</SPAN>now<SPAN class="punctuation token">.</SPAN>strftime<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"%Y-%m-%d_%H-%M.log"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
log <SPAN class="operator token">=</SPAN> logging<SPAN class="punctuation token">.</SPAN>getLogger<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"script_log"</SPAN><SPAN class="punctuation token">)</SPAN>
log<SPAN class="punctuation token">.</SPAN>setLevel<SPAN class="punctuation token">(</SPAN>logging<SPAN class="punctuation token">.</SPAN>INFO<SPAN class="punctuation token">)</SPAN>
h1 <SPAN class="operator token">=</SPAN> logging<SPAN class="punctuation token">.</SPAN>FileHandler<SPAN class="punctuation token">(</SPAN>logName<SPAN class="punctuation token">)</SPAN>
h2 <SPAN class="operator token">=</SPAN> logging<SPAN class="punctuation token">.</SPAN>StreamHandler<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
f <SPAN class="operator token">=</SPAN> logging<SPAN class="punctuation token">.</SPAN>Formatter<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"[%(levelname)s] [%(asctime)s] [%(lineno)d] - %(message)s"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'%m/%d/%Y %I:%M:%S %p'</SPAN><SPAN class="punctuation token">)</SPAN>
h1<SPAN class="punctuation token">.</SPAN>setFormatter<SPAN class="punctuation token">(</SPAN>f<SPAN class="punctuation token">)</SPAN>
h2<SPAN class="punctuation token">.</SPAN>setFormatter<SPAN class="punctuation token">(</SPAN>f<SPAN class="punctuation token">)</SPAN>
h1<SPAN class="punctuation token">.</SPAN>setLevel<SPAN class="punctuation token">(</SPAN>logging<SPAN class="punctuation token">.</SPAN>INFO<SPAN class="punctuation token">)</SPAN>
h2<SPAN class="punctuation token">.</SPAN>setLevel<SPAN class="punctuation token">(</SPAN>logging<SPAN class="punctuation token">.</SPAN>INFO<SPAN class="punctuation token">)</SPAN>
log<SPAN class="punctuation token">.</SPAN>addHandler<SPAN class="punctuation token">(</SPAN>h1<SPAN class="punctuation token">)</SPAN>
log<SPAN class="punctuation token">.</SPAN>addHandler<SPAN class="punctuation token">(</SPAN>h2<SPAN class="punctuation token">)</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Script: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>basename<SPAN class="punctuation token">(</SPAN>sys<SPAN class="punctuation token">.</SPAN>argv<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token">########################## function calls ######################################</SPAN>
replicateDatabase<SPAN class="punctuation token">(</SPAN>databaseConnection<SPAN class="punctuation token">,</SPAN> targetGDB<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">################################################################################</SPAN>
<SPAN class="keyword token">except</SPAN> Exception<SPAN class="punctuation token">,</SPAN> e<SPAN class="punctuation token">:</SPAN>
log<SPAN class="punctuation token">.</SPAN>exception<SPAN class="punctuation token">(</SPAN>e<SPAN class="punctuation token">)</SPAN>
totalTime <SPAN class="operator token">=</SPAN> formatTime<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">(</SPAN>time<SPAN class="punctuation token">.</SPAN>time<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">-</SPAN> startTime<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'--------------------------------------------------'</SPAN><SPAN class="punctuation token">)</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Script Completed After: {0}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>totalTime<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
log<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'--------------------------------------------------'</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>