使用命令行在apex数据加载器中的key extractionSOQL值

时间:2012-08-22 10:31:27

标签: salesforce

我正在使用命令行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”值。

1 个答案:

答案 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的所有记录。