我正在使用CLIq並計劃了應該每x小時運行一次的任務。 我的問題是,我的SOQL查詢獲取數據庫中的所有項目,我只需要提取在最近x小時內更新的內容。我怎樣才能限制我的查詢?提取最近x小時更新的數據的SOQL查詢
這是我的process-config.xml文件。
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="AMP_AIMS" class="com.salesforce.dataloader.process.ProcessRunner" singleton="false">
<description>Created by Dataloader Cliq.</description>
<property name="name" value="AMP_AIMS"/>
<property name="configOverrideMap">
<map>
<entry key="dataAccess.name" value="...\AMP_AIMS\write\AMP_AIMS.csv"/>
<entry key="dataAccess.readUTF8" value="true"/>
<entry key="dataAccess.type" value="csvWrite"/>
<entry key="dataAccess.writeUTF8" value="true"/>
<entry key="process.enableExtractStatusOutput" value="true"/>
<entry key="process.enableLastRunOutput" value="true"/>
<entry key="process.lastRunOutputDirectory" value="...\AMP_AIMS\log"/>
<entry key="process.operation" value="extract"/>
<entry key="process.statusOutputDirectory" value="...\AMP_AIMS\log"/>
<entry key="sfdc.bulkApiCheckStatusInterval" value="5000"/>
<entry key="sfdc.bulkApiSerialMode" value="5000"/>
<entry key="sfdc.debugMessages" value="false"/>
<entry key="sfdc.enableRetries" value="true"/>
<entry key="sfdc.endpoint" value="https://test.salesforce.com/services/Soap/u/24.0"/>
<entry key="sfdc.entity" value="Agency_Profile__c"/>
<entry key="sfdc.extractionRequestSize" value="500"/>
<entry key="sfdc.extractionSOQL" value="Select a.Total_Annual_Sales__c, a.Market_Specialties__c, a.Market_Focus__c, a.Destination_Specialties__c, a.CreatedDate, a.Agency_Website__c, a.Agency_Business_Email__c From Agency_Profile__c a"/>
<entry key="sfdc.insertNulls" value="false"/>
<entry key="sfdc.loadBatchSize" value="100"/>
<entry key="sfdc.maxRetries" value="3"/>
<entry key="sfdc.minRetrySleepSecs" value="2"/>
<entry key="sfdc.noCompression" value="false"/>
<entry key="sfdc.password" value="blabla"/>
<entry key="sfdc.proxyHost" value=""/>
<entry key="sfdc.proxyNtlmDomain" value=""/>
<entry key="sfdc.proxyPassword" value=""/>
<entry key="sfdc.proxyPort" value=""/>
<entry key="sfdc.proxyUsername" value=""/>
<entry key="sfdc.timeoutSecs" value="60"/>
<entry key="sfdc.useBulkApi" value="false"/>
<entry key="sfdc.username" value="bla"/>
</map>
</property>
</bean>
</beans>
我不知道如何表達「最後X小時」,但如果可能的話,它可能會在您的soql語句的where子句中使用lastmodifieddate字段和日期方法。 http://www.salesforce.com/us/developer/docs/soql_sosl/Content/sforce_api_calls_soql_select_date_functions.htm –
本文檔介紹了API中可用的getUpdated()方法。不過目前我還不確定你是否可以通過dataloader訪問它http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_calls_getupdated.htm我認爲Talend支持getUpdated()API方法但我不確定APEX dataloader的確如此,因爲我無法在文檔中找到對它的引用。 – Born2BeMild
@Sdry:我過去很喜歡這樣的事情:SELECT ID,Name FROM LastModifiedDate = TODAY AND HOUR_IN_DAY(LastModifiedDate)> 9'。你會讓它在12點運行,然後在下午3點運行相似的點......但仍然不理想,因爲如果其中一個運行失敗,你希望趕上...所以在裝載程序周圍有一些腳本以節省時間最後一次成功的運行是必要的。 – eyescream