我正在使用命令行apex数据加载器。我想提取那些last_ax_date字段值大于数据加载器机器上某处指定日期的帐户。
<bean id="ExtractAXAccounts" class="com.salesforce.dataloader.process.ProcessRunner"
singleton="false">
<property name="configOverrideMap"><map>
<entry key="process.operation" value="extract" />
<entry key="dataAccess.type" value="csvWrite" />
<entry key="sfdc.extractionSOQL" value="select Id, Name, Last_AX_Date from Account where Last_AX_Date greater then 'date store in somewhere in the system'" />
</map></property>
</bean>
根据上述情况,我想动态提取帐户。那么我如何指定日期以及如何将其用于“sfdc.extractionSOQL”值。
答案 0 :(得分:2)
我不相信只能为sfdc.extractionSOQL
的一部分传递值,但您可以从执行DataLoader.jar的脚本传入整个查询。这将允许您在从命令行执行时传入日期值。请记住,如果不对Data Loader附带的process.bat
文件进行一些修改,这是不可能的,所以这里是一个直接调用DataLoader.jar的解决方案:
process-conf.xml
(将sfdc.extractionSOQL
退出声明):
<bean id="ExtractAXAccounts" class="com.salesforce.dataloader.process.ProcessRunner"
singleton="false">
<property name="configOverrideMap"><map>
<entry key="process.operation" value="extract" />
<entry key="dataAccess.type" value="csvWrite" />
</map></property>
</bean>
runDL.bat
(将sfdc.extractionSOQL
作为参数传递给DataLoader.jar):
set classpath=C:\salesforce\dataloader\lib\DataLoader.jar
set mainclass=com.salesforce.dataloader.process.ProcessRunner
set confdir=C:\salesforce\dataloader\conf
if [%1]==[] goto error
call java -cp %classpath% -Dsalesforce.config.dir=%confdir% %mainclass% process.name=ExtractAXAccounts sfdc.extractionSOQL="select Id, Name, Last_AX_Date from Account where Last_AX_Date > %1"
goto end
:error
echo Error: missing date argument (must be in 'yyyy-mm-ddThh:mm:ssZ' format)
:end
然后,您可以从命令行调用runDL 2012-01-01T00:00:00Z
以提取Last_AX_Date
大于01/01/12的所有记录。