We just started using Salesforce forecasting subsystem and needed to initialize Opportunity.ForecastCategory based on two Opportunity custom fields. Hundreds of records had to be updated -- doing it by hand was not a good option.
The solution...the following short SQL Force script:
import SQLForce session = SQLForce.Session("sandbox") nUpdated = 0 ## ## Case where ForecastCategory should be Best Case ## for record in session.select("""SELECT id, forecastCategory FROM Opportunity WHERE (forecastCategory='Commit' OR forecastCategory='Pipeline') AND isClosed=false AND include_in_estimate__c=false AND include_in_upside__c=true AND license_type__c!=null AND closeDate > LAST_YEAR """): nUpdated += 1 print nUpdated session.runCommands("UPDATE Opportunity SET forecastCategoryName='Best Case' WHERE id='" + record + "'" )
There were a couple of addition loops in the code for setting other Opportunity.ForecastCategory values. Looks useful? See SQLForce Project on code.google.