salesforce dataloader schedule job 配置

1. 配置jdk 和安装dataloader

运行相关代码需要jdk环境, 需要进行java_home等的配置, 建议安装jdk 11, 尝试在jdk18的环境无法运行.
jdk 11 下载链接: openjdk download

2.生成dataloader加密文件

找到dataloader所在的文件夹
我的文件夹是:C:\Software\dataloader_win\v53.0
进入bin文件夹: C:\Software\dataloader_win\v53.0.0\bin
在文件夹路径中输入cmd, 然后按回车键打开cmd窗口在这里插入图片描述
在这里插入图片描述

3. 输入指令: encrypt.bat -k

回车后会出现一个本地地址, 记录这个地址, dataloader.key这个文件后面需要用到
在这里插入图片描述

4.根据3中的文件创建密码的密文

假设salesforce的登录密码是: 12345678
如果org限制了ip登录, 需要在密码后拼接上用户的token

在cmd中输入: encrypt.bat –e 12345678 C:\Users\junliang.dataloader\dataLoader.key
按下回车键, 会生成一段密文(下面截图黄色部分)
C:\Users\junliang.dataloader\dataLoader.key 这个文件就是步骤3中的生成的文件.
复制密文保存下来, 后期需要使用到.
在这里插入图片描述

5.创建相关文件夹

根目录: C:\DataloderScheduleJob
为了方便分类, 我创建了以下文件夹,也可以所有的文件都放在根目录下.

配置文件: C:\DataloderScheduleJob\ConfigurationFiles
需要导入的数据: C:\DataloderScheduleJob\Data
日志: C:\DataloderScheduleJob\Log
XML文件: C:\DataloderScheduleJob\XML

在这里插入图片描述

  • C:\DataloderScheduleJob\ConfigurationFiles

文件1: 步骤2中生成的dataLoader.key文件

文件2: ParameterConfiguration.bat
内容:

set EXDIR=C:\DataloderScheduleJob

这里存放的是根目录的位置

在这里插入图片描述

  • C:\DataloderScheduleJob\XML
    文件1: insertAccount.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"
        scope="prototype">
        <description>Insert Account to Salesforce</description>
        <property name="name" value="InsertAccount"/>
        <property name="configOverrideMap">
            <map>
				<entry key="dataAccess.writeUTF8" value="true"/>
				<entry key="dataAccess.readUTF8" value="true"/>
                <entry key="sfdc.debugMessages" value="false"/>
                <entry key="process.encryptionKeyFile" value="#EXPORT#\Configuration\dickdataLoader.key"/>
				<entry key="sfdc.endpoint" value="https://test.salesforce.com"/>
                <entry key="sfdc.username" value="test@test.com"/>
                <entry key="sfdc.password" value="a346cb746e0397542ddca2866cf4fb1cf62ae98cb7e976149ae1d2c9ffa09d77"/>
                <entry key="sfdc.timeoutSecs" value="600"/>
                <entry key="sfdc.loadBatchSize" value="5000"/>
				<entry key="sfdc.useBulkApi" value="true"/>
                <entry key="sfdc.entity" value="Account"/>
                <entry key="sfdc.timezone"  value="Africa/Abidjan"/>
                <entry key="process.operation" value="insert"/>
                <entry key="process.mappingFile" 
                    value="#EXPORT#\Mapping\Account.sdl"/>
                <entry key="dataAccess.name" 
                    value="#EXPORT#\Data\Account.csv"/>
                <entry key="process.outputSuccess" 
                    value="#EXPORT#\OutputFile\#CURRENT_DATE#-InsertAccount_success.csv"/>
                <entry key="process.outputError" 
                    value="#EXPORT#\OutputFile\#CURRENT_DATE#-InsertAccount_error.csv"/>
                <entry key="dataAccess.type" value="csvRead"/>
                <entry key="process.initialLastRunDate" 
                    value="2005-12-01T00:00:00.000-0800"/>
            </map>
        </property>
    </bean>
</beans>

xml的元素请参考: Data Loader Process Configuration Parameters

文件解析:

<!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"
        scope="prototype">
        <!-- ID在bat文件中会使用到, Id是唯一的-->  
        <description>Insert Account to Salesforce</description>
        <property name="name" value="InsertAccount"/>
        <!-- value 建议和 Id保持一致-->  
        <property name="configOverrideMap">
            <map>
				<entry key="dataAccess.writeUTF8" value="true"/>
				<entry key="dataAccess.readUTF8" value="true"/>
                <!-- 读写数据的格式, 不配置这个可能导入或导出的数据会存在乱码情况 -->
                <entry key="sfdc.debugMessages" value="false"/>
                <entry key="process.encryptionKeyFile" value="#EXPORT#\ConfigurationFiles\dataLoader.key"/>
                <!-- 步骤5中的文件1 -->
				<entry key="sfdc.endpoint" value="https://test.salesforce.com"/>
                <entry key="sfdc.username" value="test@test.com"/>
                <entry key="sfdc.password" value="a346cb746e0397542ddca2866cf4fb1cf62ae98cb7e976149ae1d2c9ffa09d77"/>
                <!-- 以上三个配置的是登录地址, 用户名, 密码(使用步骤2中生成的密文) -->
                <entry key="sfdc.timeoutSecs" value="600"/>
                <entry key="sfdc.loadBatchSize" value="5000"/>
                <!-- 设置导入的batchsize, 根据实际情况调节 -->
				<entry key="sfdc.useBulkApi" value="true"/>
                <!-- 是否使用bulk api, 开启后可能会减少导入时间  但是如果是update, 这个需要设置位false, 然后开启input null值, 否则null值是更新不进系统的-->
                <entry key="sfdc.entity" value="Account"/>
                <!-- 到操作的object -->
                <entry key="sfdc.timezone"  value="Africa/Abidjan"/>
                <!-- 如果存在日期/时间字段, 会受到这个参数配置的时区而影响, 当前配置时区是 +0 的时区, 如果在这里配置的是+8的时区, 那么导入系统的utc时间是文件中的时间 - 8小时.  -->
                <entry key="process.operation" value="insert"/>
                <!-- 需要进行的操作, insert, update, upsert等  -->
                <entry key="process.mappingFile" 
                    value="#EXPORT#\Account.sdl"/>
                <!-- 字段映射表所在的位置  -->
                <entry key="dataAccess.name" 
                    value="#EXPORT#\Data\Account.csv"/>
                <!-- 需要导入的文件所在位置 -->
                <entry key="process.outputSuccess" 
                    value="#EXPORT#\OutputFile\#CURRENT_DATE#-InsertAccount_success.csv"/>
                <!-- 导入系统后自动生成的success log保存的位置 -->
                <entry key="process.outputError" 
                    value="#EXPORT#\OutputFile\#CURRENT_DATE#-InsertAccount_error.csv"/>
                <!-- 导入系统后自动生成的error log保存的位置  -->
                <entry key="dataAccess.type" value="csvRead"/>
                <entry key="process.initialLastRunDate" 
                    value="2005-12-01T00:00:00.000-0800"/>
            </map>
        </property>
    </bean>
</beans>

如果一次性要导入多个文件, 则复制多个<bean>, 修改对应的参数即可.

  • InsertAccount.bat
    该文件一定要放在根目录下, 否则可能会导致其他文件读取失败
@echo off
echo insert address start..
cd /d %~dp0
call Configuration\configurationfiles.bat

# 配置时间
powershell.exe -Command "$(Get-Date).ToString('yyyyMMddhhmmss') | Out-File -Encoding "ASCII" dateString"
set /p dateString=<dateString
set currentdate=%dateString%
echo Start Time:  %dateString%

#读取xml文件 这一句(set-content %EXDIR%\ImportXML\Account\process-conf.xml)中的 process-conf.xml名称不能修复, 后面读取时默认读取这个文件名的文件, 如果修改为其他, call时会提示找不到process-conf.xml文件
powershell.exe -Command "Get-Content %EXDIR%\ImportXML\Account\InsertAccount.xml  | Foreach-Object{$_ -replace '#CURRENT_DATE#',$(Get-Date).ToString('yyyyMMddhhmmss')} | Foreach-Object{$_ -replace '#EXPORT#','%EXDIR%'} | set-content %EXDIR%\ImportXML\Account\process-conf.xml"
set logFile=%EXDIR%\OutputFile\Account\%currentdate%DailyExtractLog

#执行bean文件. 
#C:\Software\dataloader_win\v53.0\bin\process.bat  这个是dataloader的文件的位置, 大家配置的位置不一样, 记得修改, 要不然会提示报错
# InsertAccount1  是xml文件中bean 的 Id
#如果要执行多个bean, 则是多条call, 跟上对应的bean id
call C:\Software\dataloader_win\v53.0\bin\process.bat "%EXDIR%\ImportXML\Account" InsertAccount1 >%logFile%-InsertAccount1.txt

cd %EXDIR%\Data

powershell.exe -Command "$(Get-Date).ToString('yyyy-MM-dd hh:mm:ss') | Out-File -Encoding "ASCII" endTime"
set /p endTime=<endTime
echo End time:  %endTime%

配置完后面后双击bat文件即可立刻执行导入操作.

6.配置定时任务

如果导入是在某个时间段开启, 可在电脑中配置定时任务
1.进入系统的setting
2.在搜索框中输入 Schedule Tasks, 并且点击进入

在这里插入图片描述
2.创建一个task
在这里插入图片描述
填写Name
在这里插入图片描述
配置启动时间
在这里插入图片描述

选择需要执行的bat文件
在这里插入图片描述
最后点击OK按钮就可以在主界面看到刚刚配置的schedule task了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值