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
hylim12hylim12 

Dataloader command Line Databasewrite option encounter NULL pointer

Hi i would like setup my Dataloader in command to extract data and insert into my local database. however i encounter NullPointerException error. 

 

This is my process-conf.xml:

 

<bean id="databaseContactExtractProcess"
          class="com.salesforce.dataloader.process.ProcessRunner"
          singleton="false">
        <description>DatabaseAContactExtract job gets Contact info from salesforce and updates or inserts info into database."</description>
        <property name="name" value="databaseContactExtractProcess"/>
        <property name="configOverrideMap">
            <map>
                <entry key="sfdc.debugMessages" value="false"/>
                <entry key="sfdc.debugMessagesFile" value="C:\salesforcedataloader\log\sfdcSoapTrace.log"/>
                <entry key="sfdc.endpoint" value="https://login.salesforce.com"/>
                <entry key="sfdc.username" value="SF_USERNAME"/>
                <!-- password specified below is invalid, please generate one using the encrypt.bat utility -->
                <entry key="sfdc.password" value="ENCRYPTED PASSWORD"/>
				<entry key="process.encryptionKeyFile" value="C:\salesforcedataloader\key\sample.key"/>
                <entry key="sfdc.timeoutSecs" value="600"/>
                <entry key="sfdc.loadBatchSize" value="200"/>
                <entry key="sfdc.entity" value="Contact"/>
                <entry key="sfdc.extractionRequestSize" value="500"/>
                <entry key="sfdc.extractionSOQL" value="Select Id, LastName, MobilePhone, Policy_No__c FROM Contact"/>
                <entry key="process.operation" value="extract"/>
                <entry key="process.mappingFile" value="C:\salesforcedataloader\map\contactToDBMap.sdl"/>
                <entry key="dataAccess.type" value="databaseWrite"/>
                <entry key="dataAccess.name" value="insertAccount"/>
            </map>
        </property>
    </bean>

 

This is my database-conf.xml:

 

<bean id="insertAccount"
      class="com.salesforce.dataloader.dao.database.DatabaseConfig"
      singleton="true">
    <property name="sqlConfig" ref="insertAccountSql"/>
    <property name="dataSource" ref="dbSQLDataSource"/>
</bean>


<bean id="dbSQLDataSource"
      class="org.apache.commons.dbcp.BasicDataSource"
      destroy-method="close">
    <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
    <property name="url" value="jdbc:sqlserver://gsc_db01:1433;databaseName=SF_DB"/>
    <property name="username" value="sa"/>
    <property name="password" value="sa"/>
</bean>

<bean id="insertAccountSql"
      class="com.salesforce.dataloader.dao.database.SqlConfig" singleton="true">
    <property name="sqlString">
        <value>
            INSERT INTO dbo.sf_table (
               SF_ID, LNAME, MOBILE, POLICY_NO	)
            VALUES (@Id@, @LastName@, @MobilePhone@, @Policy_No__c@)
        </value>
    </property>
    <property name="sqlParams">
        <map>
            <entry key="SF_ID"    value="java.lang.String"/>
            <entry key="LNAME" value="java.lang.String"/>
            <entry key="MOBILE"  value="java.lang.String"/>
	    <entry key="POLICY_NO"  value="java.lang.String"/>
        </map>
    </property>
</bean>

 

This is the error message i get:

2013-10-07 17:23:13,485 ERROR [databaseContactExtractProcess] database.DatabaseWriter writeRowList (DatabaseWriter.java:166) - Database error encountered while
preparing row #1 for writing row #1 through row #32. Database configuration: insertAccount.  Error: .
java.lang.NullPointerException
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at com.salesforce.dataloader.dao.database.DatabaseContext.getSqlType(DatabaseContext.java:207)
        at com.salesforce.dataloader.dao.database.DatabaseContext.setSqlParamValues(DatabaseContext.java:190)
        at com.salesforce.dataloader.dao.database.DatabaseWriter.writeRowList(DatabaseWriter.java:145)
        at com.salesforce.dataloader.action.visitor.AbstractQueryVisitor.writeBatch(AbstractQueryVisitor.java:130)
        at com.salesforce.dataloader.action.visitor.AbstractQueryVisitor.flushResults(AbstractQueryVisitor.java:123)
        at com.salesforce.dataloader.action.visitor.AbstractQueryVisitor.visit(AbstractQueryVisitor.java:84)
        at com.salesforce.dataloader.action.AbstractExtractAction.visit(AbstractExtractAction.java:57)
        at com.salesforce.dataloader.action.AbstractAction.execute(AbstractAction.java:129)
        at com.salesforce.dataloader.controller.Controller.executeAction(Controller.java:121)
        at com.salesforce.dataloader.process.ProcessRunner.run(ProcessRunner.java:149)
        at com.salesforce.dataloader.process.ProcessRunner.run(ProcessRunner.java:100)
        at com.salesforce.dataloader.process.ProcessRunner.main(ProcessRunner.java:253)
2013-10-07 17:23:13,506 INFO  [databaseContactExtractProcess] progress.NihilistP
rogressAdapter doneSuccess (NihilistProgressAdapter.java:63) - The operation has fully completed.  There were 0 successful extractions and 31 errors.

 

 Anything that i miss out?

Best Answer chosen by Admin (Salesforce Developers) 
hylim12hylim12

My bad. I got it fixed. i changed my database-conf.xml to

 

<bean id="insertAccountSql"
      class="com.salesforce.dataloader.dao.database.SqlConfig" singleton="true">
    <property name="sqlString">
        <value>
            INSERT INTO dbo.sf_table (
               SF_ID, LNAME, MOBILE, POLICY_NO	)
            VALUES (@SF_ID@, @LNAME@, @MOBILE@, @POLICY_NO@)
        </value>
    </property>
    <property name="sqlParams">
        <map>
            <entry key="SF_ID"    value="java.lang.String"/>
            <entry key="LNAME" value="java.lang.String"/>
            <entry key="MOBILE"  value="java.lang.String"/>
			<entry key="POLICY_NO"  value="java.lang.String"/>
        </map>
    </property>
</bean>

 

All Answers

hylim12hylim12

My bad. I got it fixed. i changed my database-conf.xml to

 

<bean id="insertAccountSql"
      class="com.salesforce.dataloader.dao.database.SqlConfig" singleton="true">
    <property name="sqlString">
        <value>
            INSERT INTO dbo.sf_table (
               SF_ID, LNAME, MOBILE, POLICY_NO	)
            VALUES (@SF_ID@, @LNAME@, @MOBILE@, @POLICY_NO@)
        </value>
    </property>
    <property name="sqlParams">
        <map>
            <entry key="SF_ID"    value="java.lang.String"/>
            <entry key="LNAME" value="java.lang.String"/>
            <entry key="MOBILE"  value="java.lang.String"/>
			<entry key="POLICY_NO"  value="java.lang.String"/>
        </map>
    </property>
</bean>

 

This was selected as the best answer
maxam1.390996821590662E12maxam1.390996821590662E12
Thanks for your post. It has very helpful for me