runtime error and create and update featureclass

317
2
01-19-2012 07:09 PM
suhanatssuhanats
New Contributor
I have a sql table which has large number of records, more than 1,000,000 with lat lon values along with other attributes.
ID field uniquely identifies each row. The table is updated everyday and will keep growing.
With all the online help, I could write a script where it creates a featureclass and converts to a feature class.
I am experiencing two problems.
1. The script runs fine and creates a featureclass, but after sometime, it stops giving a runtime error saying 'This application has requested the runtime to terminate it in an unusual way' and points to pythonw.exe
Is it because the sql table size is large?
It does create a featureclass and does insert points there until that error.
2. since the sql table gets updated everyday, i want to find the max id from featureclass and update to exising featureclass only those rows from sql where ID greater than featurelcassid
So, the first time it is okay that it creates featureclass, but next time, I just want it to update the existing featureclass with newer records.

import pyodbc
import os, sys
import arcpy
import datetime
from arcpy import env

arcpy.env = r'\\C\test.gdb'

if arcpy.Exists("fcTest"):       
       arcpy.Rename_management(fcTest, 'fcTest + str(datetime.date.today().day))      
              
db = r'\\C\test.gdb'
spatial_reference = r'\\C\test.gdb\fcSR'
fcTest=r'\\C\test.gdb\fcTest'

conn = pyodbc.connect(r"......")

query = 'select * FROM tbl1'
arcpy.CreateFeatureclass_management(db,"fcTest", "POINT", "", ENABLED", "DISABLED", spatial_reference)
arcpy.AddField_management(fcTest, "ID", "LONG", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
arcpy.AddField_management(fcTest, "NAME", "TEXT", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
arcpy.AddField_management(fcTest, "POSITION", "TEXT", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
arcpy.AddField_management(fcTest, "TITLE", "TEXT", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
arcpy.AddField_management(fcTest, "OTHER", "TEXT", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
arcpy.AddField_management(fcTest, "HIREDATE", "DATE", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
arcpy.AddField_management(fcTest, "Lat", "FLOAT", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
arcpy.AddField_management(fcTest, "Long", "FLOAT", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")

insertCur = arcpy.InsertCursor(fcTest)   
    
for row in conn.execute(query):       
        curRow = insertCur.newRow()      
        curRow.Shape = arcpy.PointGeometry(arcpy.Point(float(row.LONG),float(row.LAT)))       
        curRow.ID = row.ID
        if row.NAME is not None:
                curRow.NAME = row.NAME
        elif row.NAME is None:
                curRow.NAME = None
        if row.POSITION is not None:
                curRow.POSITION = row.POSITION
        elif row.POSITION is None:
                curRow.POSITION = None
        if row.TITLE is not None:
                curRow.TITLE = row.TITLE
        elif row.TITLE is None:
                curRow.TITLE = None
        if row.OTHER is not None:
                curRow.OTHER = row.OTHER
        elif row.OTHER is None:
                curRow.OTHER = None
        if row.HIREDATE is not None:
                curRow.HIREDATE = row.HIREDATE
        elif row.HIREDATE is None:
                curRow.HIREDATE = None           
        if row.LAT is not None:
                curRow.LAT = float(row.LAT)
        elif row.LAT is None:
                curRow.LAT = None
       if row.LONG is not None:
                curRow.LONG = float(row.LONG )
        elif row.LONG is None:
                curRow.LONG = None              
        insertCur.insertRow(curRow)

if insertCur: del insertCur
if curRow: del curRow
Tags (2)
0 Kudos
2 Replies
MathewCoyle
Frequent Contributor
That error usually comes from running out of memory. You can trying creating table views of sections of your data to go through iteratively. Also make sure you delete your cursor after you are done with it to free the memory it was holding.
0 Kudos
suhanatssuhanats
New Contributor
Thank you Matthew
0 Kudos