2

我正在使用命令行顶点数据加载器。我想提取那些 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”值。

4

1 回答 1

2

我不相信可以只为 的一部分传递一个值sfdc.extractionSOQL,但是您可以从执行 DataLoader.jar 的脚本中传递整个查询。这将允许您在从命令行执行时传入日期值。process.bat请记住,如果不对Data Loader 附带的文件进行一些修改,这是不可能的,所以这里有一个直接调用 DataLoader.jar 的解决方案:

process-conf.xmlsfdc.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.batsfdc.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 的记录。

于 2012-08-23T13:42:14.837 回答