ステップ 4: マルチパート要求を使用する一括挿入
この Bulk API 2.0 の例では、新規レコードを挿入するジョブの作成、ジョブデータのアップロード、状況の確認、および結果の取得の手順について説明します。また、1 つのマルチパート要求を使用してジョブを作成し、データをアップロードします。
この例の場合、BOUNDARY は、リクエストボディのジョブの詳細とその CSV データの境界を示すために使用されています。
-
このマルチパートの JSON 形式のコンテンツを newmultipartjob.json という名前のファイルにコピーします。
1--BOUNDARY 2Content-Type: application/json 3Content-Disposition: form-data; name="job" 4 5{ 6 "object":"Contact", 7 "contentType":"CSV", 8 "operation": "insert", 9 "lineEnding" : "LF" 10} 11 12--BOUNDARY 13Content-Type: text/csv 14Content-Disposition: form-data; name="content"; filename="content" 15 16FirstName,LastName,MailingCity 17Astro,Nomical,San Francisco 18Hootie,McOwl,San Francisco 19Appy,Camper,San Francisco 20Earnie,Badger,San Francisco 21--BOUNDARY-- -
ジョブを作成します。
URI
1/services/data/v58.0/jobs/ingest/ジョブの作成例
1curl https://MyDomainName.my.salesforce.com/services/data/v58.0/jobs/ingest/ -H 'Authorization: Bearer 00DE0X0A0M0PeLE!AQcAQH0dMHEXAMPLEzmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1EXAMPLEDUkWe6H34r1AAwOR8B8fLEz6nEXAMPLE' -H "Content-Type: multipart/form-data; boundary=\"BOUNDARY\"" -H "Accept: application/json" -H "X-PrettyPrint:1" --data-binary @newmultipartjob.json -X POST応答にはジョブ id が含まれており、ジョブの state として UploadComplete が示されています。このジョブ id は次のステップで使用します。
レスポンスボディの例
マルチパートジョブは、作成された後に自動的に終了します。ジョブを手動で終了する必要はありません。1{ 2 "id" : "7303gEXAMPLE4X2QAN", 3 "operation" : "insert", 4 "object" : "Contact", 5 "createdById" : "0055fEXAMPLEtG4AAM", 6 "createdDate" : "2022-01-02T19:26:52.000+0000", 7 "systemModstamp" : "2022-01-02T19:26:52.000+0000", 8 "state" : "UploadComplete", 9 "concurrencyMode" : "Parallel", 10 "contentType" : "CSV", 11 "apiVersion" : 58.0, 12 "lineEnding" : "LF", 13 "columnDelimiter" : "COMMA" 14} -
次の URI を使用してジョブの状況と結果を確認します。
URI
1/services/data/v58.0/jobs/ingest/jobId/ジョブの状況と結果の確認例
1curl https://MyDomainName.my.salesforce.com/services/data/v58.0/jobs/ingest/7303gEXAMPLE4X2QAN/ -H 'Authorization: Bearer 00DE0X0A0M0PeLE!AQcAQH0dMHEXAMPLEzmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1EXAMPLEDUkWe6H34r1AAwOR8B8fLEz6nEXAMPLE' -H "Accept: application/json" -H "X-PrettyPrint:1" -X GETレスポンスボディの例
1{ 2 "id" : "7303gEXAMPLE4X2QAN", 3 "operation" : "insert", 4 "object" : "Contact", 5 "createdById" : "0055fEXAMPLEtG4AAM", 6 "createdDate" : "2022-01-02T19:54:04.000+0000", 7 "systemModstamp" : "2022-01-02T19:54:05.000+0000", 8 "state" : "JobComplete", 9 "concurrencyMode" : "Parallel", 10 "contentType" : "CSV", 11 "apiVersion" : 58.0, 12 "jobType" : "V2Ingest", 13 "lineEnding" : "LF", 14 "columnDelimiter" : "COMMA", 15 "numberRecordsProcessed" : 4, 16 "numberRecordsFailed" : 0, 17 "retries" : 0, 18 "totalProcessingTime" : 50, 19 "apiActiveProcessingTime" : 6, 20 "apexProcessingTime" : 0 21} -
成功の結果を取得します。
ジョブの状態が JobComplete または Failed になったら、どのレコードが正常に処理されたかについての詳細を取得できます。
URI
1/services/data/v58.0/jobs/ingest/jobId/successfulResults/成功の結果の取得例
1curl https://MyDomainName.my.salesforce.com/services/data/v58.0/jobs/ingest/7303gEXAMPLE4X2QAN/successfulResults/ -H 'Authorization: Bearer 00DE0X0A0M0PeLE!AQcAQH0dMHEXAMPLEzmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1EXAMPLEDUkWe6H34r1AAwOR8B8fLEz6nEXAMPLE' -H "Content-Type: application/json" -H "Accept: text/csv" -H "X-PrettyPrint:1" -X GETレスポンスボディの例
1"sf__Id","sf__Created",FirstName,LastName,MailingCity 2"0038c00002hMS4kAAG","true","Astro","Nomical","San Francisco" 3"0038c00002hMS4lAAG","true","Hootie","McOwl","San Francisco" 4"0038c00002hMS4mAAG","true","Appy","Camper","San Francisco" 5"0038c00002hMS4nAAG","true","Earnie","Badger","San Francisco"処理中にエラーが発生したレコードの詳細を取得するには、failedResults リソースを使用して GET 要求を発行します。完全な結果セットを参照していることを確認するには、unprocessedRecords リソースを使用して、未処理のレコードを調べます。「ジョブ未処理レコードの結果の取得」を参照してください。