この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

ステップ 3: 一括挿入

この Bulk API 2.0 の例では、新規レコードを挿入するジョブの作成、ジョブデータのアップロード、状況の確認、および結果の取得の手順について説明します。

レコードの挿入や更新など、Bulk API 2.0 タスクを実行するには、最初に Bulk API 2.0 ジョブを作成します。ジョブには、読み込むオブジェクトの種別 (取引先など) と、実行する操作 (挿入や削除など) を指定します。ジョブを作成して得られたジョブ ID は、以降の Bulk API 2.0 要求でジョブを終了または中止 (キャンセル) する際に使用します。

  1. この取引先の CSV 形式のリストを bulkinsert.csv という名前のファイルにコピーします。このファイルは、ジョブの作成後にデータをアップロードするために使用します。

    この例のすべてのファイルをターミナルの現行の作業ディレクトリに保存します。

    メモ

    CSV ファイルの最初の行には、処理するオブジェクトの項目名をリストします。それ以降の行は、挿入するレコードに対応します。
    1Name,ShippingCity,NumberOfEmployees,AnnualRevenue,Website,Description
    2Lorem Ipsum,Milano,2676,912260031,https://ft.com/lacus/at.jsp,"Lorem ipsum dolor sit amet"
    3Posuere Inc,Bodø,141603,896852810,http://webs.com/in/faucibus/orci/luctus/et/ultrices/posuere.json,"consectetur adipiscing elit"
    4Angeles Urban,Aykol,197724,257060529,http://odnoklassniki.ru/sapien.aspx,"sed do eiusmod tempor incididunt ut labore et dolore magna aliqua"
    5Madaline Neubert Shoes,Xukou,190305,71664061,https://blogs.com/faucibus/orci/luctus/et/ultrices/posuere/cubilia.json,"Ut enim ad minim veniam"
    6Times Online UK,Varadero,121802,58284123,http://timesonline.co.uk/eu/magna.html,"quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat"
    7The Washington Post,Hengdaohezi,190944,164329406,http://washingtonpost.com/vestibulum/proin/eu/mi/nulla/ac/enim.png,"Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur"
    8Amazon,Quintães,80285,684173825,http://amazon.co.uk/potenti/cras/in/purus/eu.png,"Excepteur sint occaecat cupidatat non proident"
  2. ジョブを作成します。
    1. newinsertjob.json という名前のファイルを作成します。
    2. このファイルに次の内容をコピーします。
      1{
      2    "object" : "Account",
      3    "contentType" : "CSV",
      4    "operation" : "insert",
      5    "lineEnding" : "LF"
      6}

      "LF" は lineEnding のデフォルトです。Mac OSX、Linux、および UNIX のファイルを書式設定するために使用されます。Windows マシンまたは DOS マシンの場合は、CRLF を使用します。

      URI

      1/services/data/v56.0/jobs/ingest/

      一括挿入ジョブの作成例

      1curl https://MyDomainName.my.salesforce.com/services/data/v56.0/jobs/ingest/ -H 'Authorization: Bearer 00DE0X0A0M0PeLE!AQcAQH0dMHEXAMPLEzmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1EXAMPLEDUkWe6H34r1AAwOR8B8fLEz6nEXAMPLE' -H "Content-Type: application/json" -H "Accept: application/json" -H "X-PrettyPrint:1" -d @newinsertjob.json -X POST

      レスポンスボディの例

      応答にはジョブ id が含まれており、ジョブの state として Open が示されています。
      1{ "id" : "7505fEXAMPLE4C2AAM",​
      2"operation" : "insert",​
      3"object" : "Account",​
      4"createdById" : "0055fEXAMPLEtG4AAM",​
      5"createdDate" : "2022-01-02T21:33:43.000+0000",​
      6"systemModstamp" : "2022-01-02T21:33:43.000+0000",​
      7"state" : "Open",​
      8"concurrencyMode" : "Parallel",​
      9"contentType" : "CSV",​
      10"apiVersion" : 56.0,​
      11"contentUrl" : "services/data/56.0/jobs/ingest/7505fEXAMPLE4C2AAM/batches",​
      12"lineEnding" : "LF",​ "columnDelimiter" : "COMMA" }
      この応答のジョブ id は、次のステップで使用します。contentUrl 項目の URI も、次のステップでデータをアップロードするときに使用します。
  3. 応答の contentUrl 項目の URI を使用して CSV データをアップロードします。

    ジョブあたり最大 150 MB をアップロードできます (base64 エンコード後)。

    URI は次のようになります。

    1/services/data/v56.0/jobs/ingest/jobId/batches/

    データのアップロード例

    1curl https://MyDomainName.my.salesforce.com/services/data/v56.0/jobs/ingest/7505fEXAMPLE4C2AAM/batches/ -H 'Authorization: Bearer 00DE0X0A0M0PeLE!AQcAQH0dMHEXAMPLEzmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1EXAMPLEDUkWe6H34r1AAwOR8B8fLEz6nEXAMPLE' -H "Content-Type: text/csv" -H "Accept: application/json" -H "X-PrettyPrint:1" --data-binary @bulkinsert.csv -X PUT

    レスポンスボディの例

    レスポンスボディはありません。

  4. ジョブを終了します。

    データの送信が完了したら、ジョブを終了して Salesforce にジョブの処理準備ができたことを伝達できます。

    URI

    1/services/data/v56.0/jobs/ingest/jobId/

    ジョブの終了例

    1curl https://MyDomainName.my.salesforce.com/services/data/v56.0/jobs/ingest/7505fEXAMPLE4C2AAM/ -H 'Authorization: Bearer 00DE0X0A0M0PeLE!AQcAQH0dMHEXAMPLEzmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1EXAMPLEDUkWe6H34r1AAwOR8B8fLEz6nEXAMPLE' -H "Content-Type: application/json; charset=UTF-8" -H "Accept: application/json" -H "X-PrettyPrint:1" --data-raw '{ "state" : "UploadComplete" }' -X PATCH

    レスポンスボディの例

    1{ "id" : "7505fEXAMPLE4C2AAM",​
    2"operation" : "insert",​
    3"object" : "Account",​
    4"createdById" : "0055fEXAMPLEtG4AAM",​
    5"createdDate" : "2022-01-02T21:33:43.000+0000",​
    6"systemModstamp" : "2022-01-02T21:33:43.000+0000",​
    7"state" : "UploadComplete",​
    8"concurrencyMode" : "Parallel",​
    9"contentType" : "CSV",​
    10"apiVersion" : 56.0 }
  5. ジョブの状況と結果を確認します。

    URI

    1/services/data/v56.0/jobs/ingest/jobId/

    ジョブ状況の確認例

    1curl https://MyDomainName.my.salesforce.com/services/data/v56.0/jobs/ingest/7505fEXAMPLE4C2AAM/ -H 'Authorization: Bearer 00DE0X0A0M0PeLE!AQcAQH0dMHEXAMPLEzmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1EXAMPLEDUkWe6H34r1AAwOR8B8fLEz6nEXAMPLE' -H "Accept: application/json" -H "X-PrettyPrint:1" -X GET

    レスポンスボディの例

    1{ "id" : "7505fEXAMPLE4C2AAM",​
    2"operation" : "insert",​
    3"object" : "Account",​
    4"createdById" : "0055fEXAMPLEtG4AAM",​
    5"createdDate" : "2022-01-02T21:33:43.000+0000",​
    6"systemModstamp" : "2022-01-02T21:38:31.000+0000",​
    7"state" : "JobComplete",​
    8"concurrencyMode" : "Parallel",​
    9"contentType" : "CSV",​
    10 "apiVersion" : 56.0,​
    11"jobType" : "V2Ingest",​
    12"lineEnding" : "LF",​
    13"columnDelimiter" : "COMMA",​
    14"numberRecordsProcessed" : 7,​
    15"numberRecordsFailed" : 0,​    
    16"retries" : 0,​
    17"totalProcessingTime" : 886,​
    18"apiActiveProcessingTime" : 813,​
    19"apexProcessingTime" : 619 }
  6. 成功の結果を取得します。

    ジョブの状態が JobComplete または Failed になったら、どのレコードが正常に処理されたかについての詳細を取得できます。

    URI

    1/services/data/v56.0/jobs/ingest/jobId/successfulResults/

    成功の結果の���得例

    1curl https://MyDomainName.my.salesforce.com/services/data/v56.0/jobs/ingest/7505fEXAMPLE4C2AAM/successfulResults/ -H 'Authorization: Bearer 00DE0X0A0M0PeLE!AQcAQH0dMHEXAMPLEzmpkb58urFRkgeBGsxL_QJWwYMfAbUeeG7c1EXAMPLEDUkWe6H34r1AAwOR8B8fLEz6nEXAMPLE' -H "Content-Type: application/json" -H "Accept: text/csv" -H "X-PrettyPrint:1" -X GET

    応答には CSV 形式のデータが含まれており、各行にはレコード ID (sf__Id) と、そのレコードが正常に処理されたかどうかを示す情報 (sf__Created) が入っています。

    レスポンスボディの例

    1"sf__Id","sf__Created",Name,ShippingCity,NumberOfEmployees,AnnualRevenue,Website,Description
    2"0018c00002FInboAAD","true","Lorem Ipsum","Milano","2676","9.12260031E8","https://ft.com/lacus/at.jsp","Lorem ipsum dolor sit amet"
    3"0018c00002FInbpAAD","true","Posuere Inc","Bodø","141603","8.9685281E8","http://webs.com/in/faucibus/orci/luctus/et/ultrices/posuere.json","consectetur adipiscing elit"
    4"0018c00002FInbqAAD","true","Angeles Urban","Aykol","197724","2.57060529E8","http://odnoklassniki.ru/sapien.aspx","sed do eiusmod tempor incididunt ut labore et dolore magna aliqua"
    5"0018c00002FInbrAAD","true","Madaline Neubert Shoes","Xukou","190305","7.1664061E7","https://blogs.com/faucibus/orci/luctus/et/ultrices/posuere/cubilia.json","Ut enim ad minim veniam"
    6"0018c00002FInbsAAD","true","Times Online UK","Varadero","121802","5.8284123E7","http://timesonline.co.uk/eu/magna.html","quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat"
    7"0018c00002FInbtAAD","true","The Washington Post","Hengdaohezi","190944","1.64329406E8","http://washingtonpost.com/vestibulum/proin/eu/mi/nulla/ac/enim.png","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur"
    8"0018c00002FInbuAAD","true","Amazon","Quintães","80285","6.84173825E8","http://amazon.co.uk/potenti/cras/in/purus/eu.png","Excepteur sint occaecat cupidatat non proident"

    処理中にエラーが発生したレコードの詳細を取得するには、failedResults リソースを使用して GET 要求を発行します。完全な結果セットを参照していることを確認するには、unprocessedRecords リソースを使用して、未処理のレコードを調べます。「ジョブ未処理レコードの結果の取得」を参照してください。