Backup creates duplicates

677
7
Jump to solution
05-17-2013 09:39 AM
TonyAlmeida
Occasional Contributor II
I have created a Geodatabase backup script for my sql geodatabase. Everything runs fine, except for it creates duplicates and adds a 1, 2 ,3 onto the end and i just want it to replace over it. What am I missing?

Here is my current code


import arcpy from arcpy import env   arcpy.env.overwriteOutput = True env.workspace = "C:\Temp\CCAP.gdb"   CCAP = r'Database Servers\DSD15_SQLEXPRESS.gds\TonyTwoWay (VERSION:dbo.DEFAULT)\TonyTwoWay.DBO.CCAP' CCAP2 = "C:\Temp\CCAP.gdb"   arcpy.FeatureClassToGeodatabase_conversion(CCAP, CCAP2)
Tags (2)
0 Kudos
1 Solution

Accepted Solutions
ChrisSnyder
Regular Contributor III
That tool you are using (arcpy.FeatureClassToGeodatabase_conversion) is a bit "weird" in that it attempts to do multiple things at once - create a Geodatabase and then copy featureclasses to it. You might have better luck by being more explicit in what you want to do in your workflow, so for example:

1. Create a FGDB
2. Copy your features to it using the CopyFeatures tool.

Perhaps you can add some logic as to what to do if these items already exists.

Not sure why arcpy.env.overwriteOutput = True isn't working properly for you. Do you have a lock on the FC or FGDB?

View solution in original post

0 Kudos
7 Replies
ChrisSnyder
Regular Contributor III
Not sure why it's creating dulplicates, but I would either:

1. Delete the existing FGDB, before you run the FeatureClassToGeodatabase tool.
or
2. Create a FGDB, and then run the CopyFeatures tool.
0 Kudos
TonyAlmeida
Occasional Contributor II
I added arcpy.Delete_management to my code but it still creates duplicates...

import arcpy
from arcpy import env
import os

arcpy.env.overwriteOutput = True
env.workspace = "C:\Temp\CCAP.gdb"

TonyTwoWay_DBO_CCAP = "C:\Temp\CCAP.gdb\TonyTwoWay.DBO.CCAP"
if arcpy.Exists(TonyTwoWay_DBO_CCAP):           
    arcpy.Delete_management("C:\Temp\CCAP.gdb\TonyTwoWay_DBO_CCAP")

CCAP = r'Database Servers\DSD15_SQLEXPRESS.gds\TonyTwoWay (VERSION:dbo.DEFAULT)\TonyTwoWay.DBO.CCAP'
CCAP2 = "C:\Temp\CCAP.gdb"


arcpy.FeatureClassToGeodatabase_conversion(CCAP, CCAP2)

0 Kudos
ChrisSnyder
Regular Contributor III
Actually I meant delete the FGDB. For example:

import arcpy, os
arcpy.env.overwriteOutput = True
arcpy.env.workspace = "C:\Temp\CCAP.gdb"
TonyTwoWay_DBO_CCAP = "C:\Temp\CCAP.gdb\TonyTwoWay.DBO.CCAP"
CCAP = r'Database Servers\DSD15_SQLEXPRESS.gds\TonyTwoWay (VERSION:dbo.DEFAULT)\TonyTwoWay.DBO.CCAP'
CCAP2 = "C:\Temp\CCAP.gdb"
if arcpy.Exists(CCAP2):           
    arcpy.Delete_managementCCAP2)
arcpy.FeatureClassToGeodatabase_conversion(CCAP, CCAP2)
0 Kudos
TonyAlmeida
Occasional Contributor II
Thanks for the replies. I have added delete FGDB and create file GDB and but it seems as my input features are not supported.
I would still just like to replace it instead of deleting the FGDB.


Traceback (most recent call last):
  File "C:\GIS\Python\BackupCCAP.py", line 20, in <module>
    arcpy.FeatureClassToGeodatabase_conversion(CCAP, CCAP2)
  File "C:\Program Files (x86)\ArcGIS\Desktop10.1\arcpy\arcpy\conversion.py", line 1569, in FeatureClassToGeodatabase
    raise e
ExecuteError: Failed to execute. Parameters are not valid.
ERROR 000732: Input Features: Dataset 'Database Servers\DSD15_SQLEXPRESS.gds\TonyTwoWay (VERSION:dbo.DEFAULT)\TonyTwoWay.DBO.CCAP' does not exist or is not supported
Failed to execute (FeatureClassToGeodatabase).

my current code

import arcpy
from arcpy import env
import os
from datetime import datetime as d
startTime = d.now()

arcpy.env.overwriteOutput = True
arcpy.env.workspace = "C:\Temp\CCAP.gdb"

TonyTwoWay_DBO_CCAP = "C:\Temp\CCAP.gdb\TonyTwoWay.DBO.CCAP"
CCAP = r'Database Servers\DSD15_SQLEXPRESS.gds\TonyTwoWay (VERSION:dbo.DEFAULT)\TonyTwoWay.DBO.CCAP'
CCAP2 = "C:\Temp\CCAP.gdb"

if arcpy.Exists(CCAP2):
    arcpy.Delete_management(CCAP2)


arcpy.CreateFileGDB_management("C:\Temp", "CCAP.gdb")

arcpy.FeatureClassToGeodatabase_conversion(CCAP, CCAP2)

try:
    print '(Elapsed time: ' + str(d.now() - startTime)[:-3] + ')'

except Exception, e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print "Line %i" % tb.tb_lineno
    print e.message

0 Kudos
TonyAlmeida
Occasional Contributor II
This seems to work, but i would like to just replace the featureclass...

import arcpy
from arcpy import env
import os
from datetime import datetime as d
startTime = d.now()

arcpy.env.overwriteOutput = True
arcpy.env.workspace = "C:\Temp\CCAP.gdb"

TonyTwoWay_DBO_CCAP = "C:\Temp\CCAP.gdb\TonyTwoWay.DBO.CCAP"
CCAP = r'Database Servers\DSD15_SQLEXPRESS.gds\TonyTwoWay (VERSION:dbo.DEFAULT)\TonyTwoWay.DBO.CCAP'
CCAP2 = "C:\Temp\CCAP.gdb"

if arcpy.Exists(CCAP2):
    arcpy.Delete_management(CCAP2)


arcpy.CreateFileGDB_management("C:\Temp", "CCAP.gdb")

arcpy.FeatureClassToGeodatabase_conversion(CCAP, CCAP2)

try:
    print '(Elapsed time: ' + str(d.now() - startTime)[:-3] + ')'

except Exception, e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print "Line %i" % tb.tb_lineno
    print e.message

0 Kudos
ChrisSnyder
Regular Contributor III
That tool you are using (arcpy.FeatureClassToGeodatabase_conversion) is a bit "weird" in that it attempts to do multiple things at once - create a Geodatabase and then copy featureclasses to it. You might have better luck by being more explicit in what you want to do in your workflow, so for example:

1. Create a FGDB
2. Copy your features to it using the CopyFeatures tool.

Perhaps you can add some logic as to what to do if these items already exists.

Not sure why arcpy.env.overwriteOutput = True isn't working properly for you. Do you have a lock on the FC or FGDB?
0 Kudos
TonyAlmeida
Occasional Contributor II
Adding the logic on what to do if the items exsits worked. Thanks

import arcpy
from arcpy import env
import os
from datetime import datetime as d
startTime = d.now()

arcpy.env.overwriteOutput = True
arcpy.env.workspace = "C:\Temp\CCAP.gdb"

TonyTwoWay_DBO_CCAP = "C:\Temp\CCAP.gdb\TonyTwoWay.DBO.CCAP"
CCAP = r'Database Servers\DSD15_SQLEXPRESS.gds\TonyTwoWay (VERSION:dbo.DEFAULT)\TonyTwoWay.DBO.CCAP'
CCAP2 = "C:\Temp\CCAP.gdb"

CCAP3 = "C:\Temp\CCAP.gdb\TonyTwoWay_DBO_CCAP"

if arcpy.Exists(CCAP3):
    arcpy.Delete_management(CCAP3)

arcpy.FeatureClassToGeodatabase_conversion(CCAP, CCAP2)

try:
    print '(Elapsed time: ' + str(d.now() - startTime)[:-3] + ')'

except Exception, e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print "Line %i" % tb.tb_lineno
    print e.message

0 Kudos