我是靠谱客的博主 苹果蜜粉,最近开发中收集的这篇文章主要介绍Salesforce Dataloader 命令行连接数据库以及导入导出数据常见注意事项,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Salesforce Dataloader 导入数据几条注意事项
2011-06-24 23:44

一. 导入数据几条注意事项

1. Dataload的时候经常会遇到Trigger提示Too Many SOQL Error. 主要因为Trigger将SOQL放到了循环里了。要想改正这个错误需要修改Trigger,但是在不能修改Trigger的情况下可以将Dataloader的每次提交行数修改为10行甚至1行,这样将不会触发循环超出限制。

2. Dataload的时候经常会遇到Trigger报错200条记录都报错,但是可能只是其中1条错误,由于Trigger是200条一个Batch,所以一个错误会导致200条错误。

3. 在进行有主键外键的系统迁移到SFDC系统的时候可以使用External Id 进行Upsert 操作。这样Lookup field可以不是必须使用ID进行更新,可以使用External ID进行更新了。同样适用于Sandbox到Production的数据转移。

4. Company Profile 时区需要设置成GMT,否则Createdate和LastmodifiedDate会自己加减。

5. Dataloader时区最好需要设置成GMT。不然当Dataloader时区和Salesforce时区相差12小时的时候,系统会自动减去一天。

6. Opportunity Object and Contact Role是Master, Detail 关系,并且Salesforce认为两个Object同属于Opportunity,所以Insert Contact Role的时候,Opportunity的LastModifiedDate会同时更新成当前日期。目前没办法解决。

7. Opportunity Stage name 会自动记录到StageHistory里,而且当History改变的时候,系统认为这个Opportunity也改变了,所有LastmodifiedDate也会被改变,所有在用CSV文件导入到Salesforce的时候,要注意StageName列的位置要排在LastModifiedDate前面。

. Data Loader 配置命令行运行以及连接SQLServer 数据库 

1.encrypt.bat  -g aaaa > key.txt. 生成key file.

2. encrypt.bat -e<password+security token> "<filepath>key.txt". 生产加密密码.

3. 生成或者Copy一个Map文件. 

4. 配置process-conf.xml

5. 配置database-conf.xml,如果数据要和DB交互的话,Dataloader可以通过JDBC建立连接

6. 运行命令 process.bat"C:Program Filessalesforce.comData Loaderbin" insertAccount

process-conf.xml:例子

<!DOCTYPE beans PUBLIC"-//SPRING//DTD BEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="insertAccount"
         class="com.salesforce.dataloader.process.ProcessRunner"
          singleton="false">
        <description>insertAccount job gets accountinfo from salesforce and updates or inserts info intodatabase."</description>
        <property name="name"value="insertAccount"/>
        <property name="configOverrideMap">
            <map>
                <entrykey="sfdc.debugMessages" value="false"/>
                <entrykey="sfdc.debugMessagesFile"value="C:dataloadersamplesstatussfdcSoapTrace.log"/>
                <entrykey="sfdc.endpoint" value="https://login.salesforce.com"/>
                <entrykey="sfdc.username" value="xxxxxx@xxxx.xx"/>
                <entrykey="sfdc.password"value="............................................................................"/>
                <entrykey="process.encryptionKeyFile" value="C:ProgramFilessalesforce.comData Loaderbinkey.txt"/>               
                <entrykey="sfdc.timeoutSecs" value="600"/>
                <entrykey="sfdc.loadBatchSize" value="200"/>
                <entrykey="sfdc.entity" value="Account"/>
                <entrykey="sfdc.extractionRequestSize" value="500"/>
                <entrykey="sfdc.extractionSOQL" value="SELECT ID, NAME, CREATEDDATEFROM ACCOUNT"/>
                <entrykey="process.operation" value="extract"/>
                <entrykey="dataAccess.type" value="databaseWrite"/>
                <entrykey="dataAccess.name" value="insertAccount"/>
            </map>
        </property>
    </bean>    
</beans>

database-conf.xml: SQLServer2005.

<!DOCTYPE beans PUBLIC"-//SPRING//DTD BEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dbDataSource"class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">
    <property name="driverClassName"value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
    <!--property name="url"value="jdbc:sqlserver://localhost:1433;DatabaseName=Test1"/-->
    <property name="url"value="jdbc:sqlserver://localhost:1433;DatabaseName=Test1;user=sa;password=xxxxxx"/>
    <property name="username" value="sa"/>
    <property name="password"value="yg010101"/>
</bean>
<bean id="insertAccount"
     class="com.salesforce.dataloader.dao.database.DatabaseConfig"
      singleton="true">
    <property name="sqlConfig"ref="insertAccountSql"/>
    <property name="dataSource"ref="dbDataSource"/>
</bean>
<bean id="insertAccountSql"
     class="com.salesforce.dataloader.dao.database.SqlConfig"singleton="true">
    <property name="sqlString">
        <value>
            INSERT INTO dbo.Accounts(ID,  NAME  ,CREATEDDATE)
                            VALUES (@ID@, @NAME@,@CREATEDDATE@)
        </value>
    </property>
    <property name="sqlParams">
        <map>
            <entry key="ID"   value="java.lang.String"/>
            <entry key="NAME" value="java.lang.String"/>
            <entry key="CREATEDDATE" value="java.lang.datetime"/>
        </map>
    </property>
</bean>
</beans>





最后

以上就是苹果蜜粉为你收集整理的Salesforce Dataloader 命令行连接数据库以及导入导出数据常见注意事项的全部内容,希望文章能够帮你解决Salesforce Dataloader 命令行连接数据库以及导入导出数据常见注意事项所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部