|
CopyForce
CopyForce -- Copy an Instance of Salesforce to an RDBMSCopyForce is an application for copying full or partial Salesforce instances to a relational database. Several target databases are supported out of the box:
Both incremental and complete copies are supported. Are you looking for the commercial version? The CAPSTORM version is faster, has a secure GUI, and supports the latest Salesforce protocol. To get started:
How Is CopyForce Used?
ExamplesExample: Copy all tables from Salesforce to an empty SQL Server database. java -jar CopyForceSqlServer.jar -schema -gui -salesforce Production,myname@gmail.com,password,0908989token -sqlserver "//localhost;databaseName=sqlforcetest;username=me;password=caleb&noah;" Example: Update existing Account and Contact tables in SQL Server. java -jar CopyForceSqlServer.jar -include "Account,Contact" -gui -salesforce Production,myname@gmail.com,myPassword,SecurityToken -sqlserver "//localhost;databaseName=sqlforcetest;username=me;password=caleb&noah;" Example: Create a new H2 database that contains all Saleforce tables. java -jar CopyForceH2.jar -schema -gui -salesforce Production,myname@gmail.com,myPassword,SecurityToken -h2 C:/tmp/SalesforceCopy -h2user sa -h2password aslan Example: Copy all Account records that have been created or modified this week. java -jar CopyForceOracle -include Account -since last_week -salesforce Production,myname@gmail.com,myPassword -oracle "localhost:1521:xe" -orauser fred -orapassword joker If it works for you and or you have suggestions please contact me at mailto:gsmithfarmer@gmail.com. If you need support for another database engine, I would be glad to help. |
Why is the tool not working with Org's having encryption fields? Can you fix this in your next upgrades. That would be nice to have.
does SQLforce and copyforce synchronize the data in the same time parallel.i mean when i update record in oracle SQL does this record udated in the salesforce automatically,or these tool just cpy instance frm bth data base
what if i want to exclude one or more tables. at present i want to exclude one table which is very big in size.
thanks
The -exclude command line switch accepts a comma separated list of tables to exclude. Your can use regular expressions for table names. Example:
-exclude "xt.,attachment"
excludes all ExactTarget? tables and the standard attachment table.
Alternatively you can use the -include command line switch to list the tables to include.
thanks it worked like a charm...
Excellent tool, thanks. The schema created in SQLServer does not quite match Salesforce, e.g. RecordType?.SobjectType? is char 40, its char 120 in SF, leading to "...data truncated". Perhaps the ddl is fixed, and needs updating v. the latest SF ?
I was able to retrieve all the table names and have them automatically built on my local SQL instance, but how do I copy over the data in the tables? Thanks!
the -schema switch automatically starts copying data once the schema has been fully created. Use the -exclude and -include switches for excluding and including tables accordingly. See the command line argument doc for more info. I recommend excluding the Attachments table. That takes a long time.
I don't suppose SqlForce? (or another version) is able to upload to SF from SQL? I suppose there is the whole "mapping" complexity involved and such. Just curious. Informatica Data Loader is a pain to get the data back up once we've used CopyForce to get the schema and the data down for analysis. Asking from a migration-perspective.
I have used the Jython SQLForce package for uploading from SQL to SFDC. Primarily this has been for one-off data loads but also has worked for SFDC merges. Before the Jython/SQLForce module I used the base JavaForce.jar and and custom Java (in an Eclipe RichClient?) to achvieve the same. The hard part is what you indicated -- the data mapping. The current CopyForce has an option for creating SFDC->RDBMS meta mapping tables in the RDBMS (complete information about SFDC->RDBMS mappings that occurred).
gsmithfarmer Thanks for this!
You have done something which lots of SQL users will like. This tool is really hands on! Very good, at last I can SQL the data and see what's all about, also when I use CopyForce into Oracle I can see other tables (standard objects) which I can't usually see from the Salesforce IDE, good tool for learning and exploring a salesforce ORG. The best feature with this tool for me is that you can be the king of the salesforce data with this and do what you like with it! Superb!
Kubilay
Great tool. Thank you!
I have large SF DB and when I run copyForce to update tables in SQL server - runs for several hours, - copyforce window with upload status tables will close when done or when exception happens. So I can not see which table had rows updated and which table cause exception. Is there any log or non "gui" version that will output data to file, so I can see what is done?
Exclude the -gui flag from the command line and progress will be written to stdout. You can also run the program with a -# option and all command line options will be displayed (with a 1-line description)
How large is large? I back up a 4GB database every day (using incremental backups) and it takes around 4 minutes most days (and ~500 SFDC transactions).
You may want to look at the commercial version (www.capstorm.com). It has solid documentation and a stronger code base (the open source tool will always lag the commercial version by a bit -- as long as sales allows me to publish it). Most importantly for your case, it does a great job at incremental backups.
Thanks for the feedback. I appreciate it.
Thanks for quick answer - I should be reading documentation you have provided :-)
We are switching to another CRM and I just need extract all data we have in SalesForce?.
Resulting SQL DB is 1 GB - I loaded it by running script for each table. Running without gui option now. It takes 6 minutes for one table "accounts" - 38582 rows. Here is log. 10:57:32: Calculating the order in which data will be extracted 10:58:17: Start Copy From Account 11:04:13: End Copy From Account (38582 read, 38582 skipped, 0 copied) ..
Just FYI. When doing incremental updates I getting PK violation on tables loginHistory and dashboardComponents.
Hum. That is interesting. I do an incremental to SQL/Server every day (including the tables you mention -- they include data). I do not see the problem (of course I use the commercial version). If you see the same problem with the commercial version (you can try it for 30 days and not even provide contact info) we will fix it pronto. The www.capstorm.com version is a lot smarter about copying records and takes almost no time to start copying. In the case you described (where 38582 records were skipped, the commercial version would have read a single record).
This is fantastic; thank you! CopyForce has become instrumental to my day-to-day conversion efforts. I also have a quick question: is it possible to copy the object model without bringing down any data?
I found the answer to my previous question for anyone who is interested. I used the -since switch and set the date to a future value. (e.g. -since 2100-12-31T00:00:15.000Z) This resulted in the complete object structure without any of the data.
Great tool thanks for sharing.
Is there any rules/restrictions that will exclude some data from CopyForce uploads?
Comparing data uploaded using CopyForce and Uploaded directly from SF using data export. Table Task. Imported by CopyFOrce has 32275 rows, direct upload has 249,339 rows I am running CF as java -Xms1024m -Xmx1024m -jar CopyForceSqlServer?.jar -include "task" -salesforce Production,<user>,<pwd>,<tocken> -sqlserver "<connection_string>" 1>>run.log 2>>error.log
No errors, Log file looks OK as well
09:08:18: Connecting to Salesforce 09:08:25: Connecting to destination database 09:08:25: Start table data copy 09:08:25: Calculating the order in which data will be extracted 09:08:26: Start Copy From Task 09:09:05: ....Copying from Task(100 so far) ... 09:16:52: ....Copying from Task(31175 so far) 09:16:52: End Copy From Task (31175 read, 0 skipped, 31175 copied) 09:16:53: Finished table data copy 09:16:53: Finished copying data 09:16:53: Copy is Complete 09:16:53: Finished
Yes....I believe this is a SFDC restriction on the Task (and Event) table when using the SOAP query() call . From the SOAP interface querying the task table does not return archived tasks. SFDC decides when to archive tasks (based on their age I think). I believe they can be retrieved using the queryAll() method -- however that requires a code change in CopyForce.
Out of the manual: Salesforce.com archives activities (tasks and events) that are over a year old.
You can use queryAll() to query on all Task and Event records, archived or not. You can also filter on the isArchived field to find only the archived objects. You cannot use query() as it automatically filters out all records where isArchived is set to true. You can update or delete archived records, though you cannot update the isArchived field. If you use the API to insert activities that meet the criteria listed below, the activities will be archived during the next run of the archival background process.
Hello all. I´m trying to use it like this: java -jar CopyForceOracle? -include Account -since last_week -salesforce Production,myname@gmail.com,myPassword and I´m getting connectivity errors in salesforce. In our org the tokens are not active. Can anyone suggest what can be happening????.
Where can I download the SQL package, I can't find it in the download section.
It has been moved to www.capstorm.com
To: Gsmithfarmer
Just wanted to verify: