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 を実行するスクリプトからクエリ全体を渡すことはできます。これにより、コマンド ラインから実行するときに日付値を渡すことができます。これは、Data Loader に付属のファイルにいくつかの変更を加えることなく行うことはできないことprocess.batに注意してください。そのため、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.bat( sfdc.extractionSOQLDataLoader.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 に答える