function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
sfcomdevelopersfcomdeveloper 

Issue with Configuring Appexchange data loader CLI

 

I am a newbie, This is the command I m executing

 

c:\Program Files (x86)\salesforce.com\Apex Data Loader 22.0\bin>process.bat "C:\Program Files (x86)\salesforce.com\Apex Data Loader 22.0\conf" csvAccountExtractProcess

 

Not sure how to resolve this error and the error I m getting is 

 

2011-06-28 00:47:41,686 INFO  [main] controller.Controller initLog (Controller.java:367) - The log has been initialized2011-06-28 00:47:41,691 INFO  [main] process.ProcessConfig getBeanFactory (ProcessConfig.java:78) - Loading process configuration from config file: C:\Program Files (x86)\salesforce.com\Apex Data Loader 22.0\conf\process-conf.xml2011-06-28 00:47:41,735 INFO  [main] xml.XmlBeanDefinitionReader loadBeanDefinitions (XmlBeanDefinitionReader.java:163) - Loading XML bean definitions from file [C:\Program Files (x86)\salesforce.com\Apex Data Loader 22.0\conf\process-conf.xml]2011-06-28 00:47:41,761 INFO  [main] core.CollectionFactory <clinit> (CollectionFactory.java:66) - JDK 1.4+ collections available2011-06-28 00:47:41,770 INFO  [main] core.CollectionFactory <clinit> (CollectionFactory.java:71) - Commons Collections 3.x available2011-06-28 00:47:41,825 INFO  [csvAccountExtract] controller.Controller initConfig (Controller.java:328) - The controller config has been initialized2011-06-28 00:47:41,829 INFO  [csvAccountExtract] process.ProcessRunner run (ProcessRunner.java:90) - Initializing process engine2011-06-28 00:47:41,830 INFO  [csvAccountExtract] process.ProcessRunner run (ProcessRunner.java:93) - Loading parameters2011-06-28 00:47:42,762 INFO  [csvAccountExtract] config.LastRun load (LastRun.java:101) - Last run info will be saved in file: C:\Program Files (x86)\salesforce.com\Apex Data Loader 22.0\conf\csvAccountExtract_lastRun.properties2011-06-28 00:47:42,774 INFO  [csvAccountExtract] process.ProcessRunner run (ProcessRunner.java:101) - Logging in to: https://login.salesforce.com2011-06-28 00:47:42,783 INFO  [csvAccountExtract] client.PartnerClient login (PartnerClient.java:448) - Beginning Partner Salesforce login ....2011-06-28 00:47:42,803 INFO  [csvAccountExtract] client.PartnerClient loginInternal (PartnerClient.java:488) - Salesforce login to https://login.salesforce.com/services/Soap/u/22.0 as user xxx@hotmail.com2011-06-28 00:47:43,530 INFO  [csvAccountExtract] dao.DataAccessObjectFactory getDaoInstance (DataAccessObjectFactory.java:51) - Instantiating data access object: C:\Program Files (x86)\salesforce.com\Apex Data Loader 22.0\OutputFiles\extract.csv of type: csvWrite2011-06-28 00:47:43,564 INFO  [csvAccountExtract] process.ProcessRunner run (ProcessRunner.java:106) - Checking the data access object connection2011-06-28 00:47:43,569 INFO  [csvAccountExtract] process.ProcessRunner run (ProcessRunner.java:111) - Setting field types2011-06-28 00:47:44,464 INFO  [csvAccountExtract] process.ProcessRunner run (ProcessRunner.java:115) - Setting object reference types2011-06-28 00:47:45,310 INFO  [csvAccountExtract] process.ProcessRunner run (ProcessRunner.java:119) - Creating Map2011-06-28 00:47:45,350 FATAL [main] process.ProcessRunner topLevelError (ProcessRunner.java:211) - Unable to run process csvAccountExtractjava.lang.RuntimeException: java.lang.IllegalArgumentException: Cannot parse empty string        at com.salesforce.dataloader.process.ProcessRunner.run(ProcessRunner.java:136)        at com.salesforce.dataloader.process.ProcessRunner.run(ProcessRunner.java:74)        at com.salesforce.dataloader.process.ProcessRunner.main(ProcessRunner.java:226)Caused by: java.lang.IllegalArgumentException: Cannot parse empty string        at com.salesforce.dataloader.mapping.SOQLInfo.getTrimmed(SOQLInfo.java:162)        at com.salesforce.dataloader.mapping.SOQLInfo.access$000(SOQLInfo.java:38)        at com.salesforce.dataloader.mapping.SOQLInfo$SOQLFieldInfo.<init>(SOQLInfo.java:52)        at com.salesforce.dataloader.mapping.SOQLInfo$SOQLFieldInfo.<init>(SOQLInfo.java:72)        at com.salesforce.dataloader.mapping.SOQLMapper.putPropertyEntry(SOQLMapper.java:98)        at com.salesforce.dataloader.mapping.Mapper.putPropertyFileMappings(Mapper.java:129)        at com.salesforce.dataloader.mapping.Mapper.putPropertyFileMappings(Mapper.java:124)        at com.salesforce.dataloader.mapping.Mapper.<init>(Mapper.java:76)        at com.salesforce.dataloader.mapping.SOQLMapper.<init>(SOQLMapper.java:57)        at com.salesforce.dataloader.controller.Controller.createMapper(Controller.java:179)        at com.salesforce.dataloader.process.ProcessRunner.run(ProcessRunner.java:120)        ... 2 more

 

Process-conf.xml is 

 

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans>    <bean id="csvAccountExtractProcess"          class="com.salesforce.dataloader.process.ProcessRunner"          singleton="false">      <description>csvAccountExtract job gets account info from salesforce and saves info into a CSV file."</description>        <property name="name" value="csvAccountExtract"/>        <property name="configOverrideMap">            <map>                <entry key="sfdc.debugMessages" value="false"/>                <entry key="sfdc.debugMessagesFile" value="c:\dataloader\samples\status\sfdcSoapTrace.log"/>                <entry key="sfdc.endpoint" value="https://login.salesforce.com"/>                <entry key="sfdc.username" value="xxx@abc.com"/>               <!-- password below has been encrypted using key file, therefore it will not work without the key setting: process.encryptionKeyFile                the password is not a valid encrypted value, please generate the real value using encrypt.bat utility -->                <entry key="sfdc.password" value="f9ffa659b6f79c1993e42d748778"/><entry key="process.encryptionKeyFile" value="C:\Program Files (x86)\salesforce.com\Apex Data Loader 22.0\conf\sforcekey.key"/>                <entry key="sfdc.timeoutSecs" value="600"/>                <entry key="sfdc.loadBatchSize" value="200"/>                <entry key="sfdc.entity" value="Account"/>                <entry key="sfdc.extractionRequestSize" value="500"/>                <entry key="sfdc.extractionSOQL" value="Select Id, Name, Type, ParentId, Phone, AccountNumber, Website, Sic, AnnualRevenue, NumberOfEmployees, TickerSymbol, Oracle_Id__c FROM Account"/>                <entry key="process.operation" value="extract"/>                <entry key="process.mappingFile" value="C:\Program Files (x86)\salesforce.com\Apex Data Loader 22.0\samples\conf\accountExtractMap.sdl"/>                <entry key="dataAccess.type" value="csvWrite"/>                <entry key="dataAccess.name" value="C:\Program Files (x86)\salesforce.com\Apex Data Loader 22.0\OutputFiles\extract.csv"/>            </map>        </property>    </bean></beans>

 

Any help will be greatly appreciated.

Ray DehlerRay Dehler

Can you post your process.bat?

sfcomdevelopersfcomdeveloper

Thanks Ray, I was trying different options and was able to solve the issue I had. The reason it was erroring out was because of the columns being mapped in .sdl file. I tried with couple of columns in process-conf.xml file and mapped the same columns only in .sdl file and it worked. Thanks again. I  was able to successfully extract the data to a .csv file.

 

Is there any blog or an article which lists down step-by-step process for configuring the CLI dataloader to load data into SQL Server 2005/2008?


I tried to extract the data to a SQL Server Database the command fails with the following error and I did move the sqljdbc.jar file to the same location as the dataloader.jar file. Not sure how the process-conf.xml works with database-conf.xml. I can post the database-conf.xml if needed

 

Command I m executing is

c:\Program Files (x86)\salesforce.com\Apex Data Loader 22.0\bin>process.bat "C:\
Program Files (x86)\salesforce.com\Apex Data Loader 22.0\conf" databaseAccountEx
tractProcess

 

2011-06-30 20:50:11,642 INFO  [databaseAccountExtract] process.ProcessRunner run
 (ProcessRunner.java:106) - Checking the data access object connection
2011-06-30 20:50:11,644 ERROR [databaseAccountExtract] database.DatabaseContext
initConnection (DatabaseContext.java:87) - Database error encountered during con
necting for database configuration: updateAccount.  Sql error: Cannot load JDBC
driver class 'com.microsoft.jdbc.sqlserver.SQLServerDriver'.
org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.m
icrosoft.jdbc.sqlserver.SQLServerDriver'

 

Process.bat

 

@echo off
if not [%1]==[] goto run
echo.
echo Usage: process ^<configuration directory^> ^[process name^]
echo.
echo      configuration directory -- directory that contains configuration files,
echo          i.e. config.properties, process-conf.xml, database-conf.xml
echo.
echo      process name -- optional name of a batch process bean in process-conf.xml,
echo          for example:
echo.
echo              process ../myconfigdir AccountInsert
echo.
echo          If process name is not specified, the parameter values from config.properties
echo          will be used to run the process instead of process-conf.xml,
echo          for example:
echo.
echo              process ../myconfigdir
echo.

goto end

:run
set PROCESS_OPTION=
if not [%2]==[] set PROCESS_OPTION=process.name=%2

..\_jvm\bin\java.exe -cp ..\sqljdbc.jar;..\DataLoader.jar -Dsalesforce.config.dir=%1 com.salesforce.dataloader.process.ProcessRunner %PROCESS_OPTION%

:end

 

Here is the process-conf.xml file

 

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
      <bean id="databaseAccountExtractProcess"
          class="com.salesforce.dataloader.process.ProcessRunner"
          singleton="false">
        <description>DatabaseAccountExtract job gets account info from salesforce and updates or inserts info into database."</description>
        <property name="name" value="databaseAccountExtract"/>
        <property name="configOverrideMap">
            <map>
                <entry key="sfdc.debugMessages" value="false"/>
                <entry key="sfdc.debugMessagesFile" value="c:\dataloader\samples\status\sfdcSoapTrace.log"/>
                <entry key="sfdc.endpoint" value="https://login.salesforce.com"/>
                <entry key="sfdc.username" value="xxx@abc.com"/>
                  <!-- password below has been encrypted using key file, therefore it will not work without the key setting: process.encryptionKeyFile
                the password is not a valid encrypted value, please generate the real value using encrypt.bat utility -->
                <entry key="sfdc.password" value="f9ffa659b6f79c1993e42d74877899"/>
    <entry key="process.encryptionKeyFile" value="C:\Program Files (x86)\salesforce.com\Apex Data Loader 22.0\conf\sforcekey.key"/>
                <entry key="sfdc.timeoutSecs" value="600"/>
                <entry key="sfdc.loadBatchSize" value="200"/>
                <entry key="sfdc.entity" value="Account"/>
                <entry key="sfdc.extractionRequestSize" value="500"/>
                <entry key="sfdc.extractionSOQL" value="Select Id, Name, Phone FROM Account"/>
                <entry key="process.operation" value="extract"/>
                <entry key="process.mappingFile" value="C:\Program Files (x86)\salesforce.com\Apex Data Loader 22.0\samples\conf\accountExtractToDbMap.sdl"/>
                <entry key="dataAccess.type" value="databaseWrite"/>
                <entry key="dataAccess.name" value="updateAccount"/>
            </map>
        </property>
    </bean>
</beans> 

 

Any help will be appreciated. Thanks.