---
title: "ウォークスルー:カタログおよび在庫データのエクスポート"
slug: "walkthrough--exporting-catalog-and-inventory-data"
abstract: "Sitecore XC環境からカタログおよび在庫データをエクスポートする方法。"
---
# ウォークスルー:カタログおよび在庫データのエクスポート

このトピックでは、Sitecore XC環境からカタログおよび在庫データをエクスポートする方法を説明します。

Sitecore XCは、Commerce環境からカタログデータや在庫セットをエクスポートするためのアプリケーションプログラミングインターフェース(API)を提供します。例えば、開発環境からCommerceカタログをエクスポートし、テスト環境やステージング環境など別の環境に[インポート](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/walkthrough--importing-catalog-data.html "Walkthrough: Importing catalog data") できます。

エクスポートされたデータのデータ構造の詳細については、「 [生成されたデータ構造](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/walkthrough--exporting-catalog-and-inventory-data.html#UUID-c24ff065-f06a-fabd-015e-8e8fe5187456_section-5c648088ab716-idm46092401675424 "Generated data structure") 」セクションを参照してください。

カタログおよび在庫データのエクスポート:

-   [インターネット情報サービス(IIS)関連設定の変更](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/walkthrough--exporting-catalog-and-inventory-data.html#UUID-c24ff065-f06a-fabd-015e-8e8fe5187456_section-idm46353697809312 "Modify the Internet Information Services (IIS) related settings ") 
-   [SQLのタイムアウト設定を変更する](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/walkthrough--exporting-catalog-and-inventory-data.html#UUID-c24ff065-f06a-fabd-015e-8e8fe5187456_section-idm253191711483818 "Change the SQL timeout configuration")
-   [Bootstrapコマースエンジン](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/walkthrough--exporting-catalog-and-inventory-data.html#UUID-c24ff065-f06a-fabd-015e-8e8fe5187456_section-idm253191712023516 "Bootstrap the Commerce Engine")
-   [Commerceカタログデータセットのエクスポート](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/walkthrough--exporting-catalog-and-inventory-data.html#UUID-c24ff065-f06a-fabd-015e-8e8fe5187456_section-idm45811141765072 "Export a Commerce catalog data set")
-   [商業在庫セットをエクスポートする](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/walkthrough--exporting-catalog-and-inventory-data.html#UUID-c24ff065-f06a-fabd-015e-8e8fe5187456_section-idm253080990969000 "Export a Commerce inventory set")

## インターネット情報サービス(IIS)関連設定の変更

カタログデータのエクスポートを始める前に、インターネット情報サービス(IIS)の設定(IISマネージャーおよびweb.configファイル)を変更し、データエクスポート中のタイムアウトのリスクを減らす必要があります。これは非常に大規模なカタログデータセットをエクスポートする際に重要です。

web.configファイルのIIS設定および関連設定を変更するには:

1.  インターネット情報サービス(IIS)マネージャーを起動し、ナビゲーションツリーで **「アプリケーションプール」**をクリックします。
    
2.  **アプリケーションプール**のページで、該当するアプリケーションプールの名前(例:*CommerceAuthoring\_Sc*)をクリックしてください。
    
3.  **アクション**ペインの**「アプリケーションプール編集**」セクションで「**詳細設定**」をクリックし、**詳細設定**ダイアログボックスで以下のパラメータ値を*0*(ゼロ)に設定します。
    
    セクション
    
    パラメータ
    
    価値
    
    **CPU**
    
    **リミット間隔(分)**
    
    *0*
    
    **プロセスモデル**
    
    **アイドルタイムアウト(分)**
    
    *0*
    
    **リサイクル**
    
    **規則時間間隔(分)**
    
    *0*
    
4.  **OK**をクリックします。
    
5.  カタログデータをエクスポートするサービスのweb.configファイル(例:C:\\inetpub\\wwwroot\\CommerceAuthoring\_Sc\\web.config)を開き、以下の設定サンプルで太字で表示された設定を変更してください。
    
    > !注以下の例のようにIISの設定を変更する前に、カタログエクスポート終了後に元の値を把握しておくと、元の値を把握してください。
    
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.webServer>
        <security>
          <requestFiltering>
            <!-- For Microsoft IIS (Internet Information Services), maxAllowedContentLength specifies the maximum length of content in a request, in bytes. -->
            <requestLimits maxAllowedContentLength="2147483648" />
          </requestFiltering>
        </security>
        <handlers>
          <add name="aspNetCore" path="\*" verb="\*" modules="AspNetCoreModule" resourceType="Unspecified" />
        </handlers>
        <modules runAllManagedModulesForAllRequests="false">
          <remove name="WebDAVModule" />
        </modules>
        <aspNetCore processPath=".\\Sitecore.Commerce.Engine.exe" arguments="" forwardWindowsAuthToken="false" stdoutLogEnabled="false" requestTimeout="\`00:00\`:00" stdoutLogFile=".\\logs\\stdout" />
      </system.webServer>
    </configuration>
    
    > !注オプションとして、カタログエクスポートプロセス中に情報収集のためのログを有効にすることもできます。これを行うには、カタログデータをエクスポートするサービスのconfig.jsonファイル(例:C:\\inetpub\\wwwroot\\CommerceAuthoring\_Sc\\wwwroot\\config.json)を開き、ログレベルの値を"Information"に設定してください。
    > 
    > "Serilog": {"Using": "Serilog.Sinks.Literate","Serilog.Sinks.File","Serilog.Sinks.ApplicationInsights","MinimumLevel": {"Default": "Information", "Override": {"Microsoft": "Information","System": "Information"}},
    
6.  インターネット情報サービスをリセットしろ。
    

## SQLのタイムアウト設定を変更する

SQLのタイムアウト設定を変更して、SQLデータベースへの接続が開いたままにし、長いプロセスが完了しないようにしましょう。

SQLのタイムアウト設定を変更するには:

1.  カタログデータをインポートするために使用するオーサリングサービスのインスタンスで、Plugin.SQL.PolicySet-1.0.0.jsonファイルを開きます(例: C:\\inetpub\\wwwroot\\CommerceAuthoring\_Sc\\wwwroot\\data\\Environments\\Plugin.SQL.PolicySet-1.0.0.json
    
2.  "ConnectTimeout"とプロパティの値を"CommandTimeout" "0"に設定します。
    
    > !注現在の不動産価値を記録し、カタログのインポートを終えた後に元の価値に戻すようにしましょう。
    

## Bootstrapコマースエンジン

Commerce Engineの設定を変更した後、[Commerce Engineをブートストラップしてください](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/bootstrap-the-commerce-engine.html "Bootstrap the Commerce Engine")。

## Commerceカタログデータセットのエクスポート

この例は、Sitecore Commerce Engine SDKに付属しているPostmanサンプルに基づいています。

以下の手順は、[Postmanアプリケーションのインストールと設定](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/execute-sample-api-calls-in-postman.html "Execute sample API calls in Postman")、Sitecore Commerce Engine SDKからのサンプルコレクションを取り込み、環境を設定し、Commerce Engine APIにアクセスするためのベアラートークンを取得したことを前提としています。

> !注エクスポートカタログAPIリクエストを実行するためにPostmanを使う代わりに、この[例](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/walkthrough--exporting-catalog-and-inventory-data.html#UUID-c24ff065-f06a-fabd-015e-8e8fe5187456_section-idm46353698177216 "Example of a catalog data export using cURL in a Bash script")はBashスクリプトでcURLコマンドの使い方を示しています。

Postmanを使ってCommerce XCカタログデータセットをエクスポートするには:

1.  Postman**コレクション**のペインで*CatalogAPISamples*コレクションを展開します。
    
2.  *カタログ - API*フォルダを開き、Export Catalogsリクエスト({{ServiceHost}}/{{ShopsApi}}/ExportCatalogs())を選択してください。
    
3.  Environmentフィールドで、エクスポートするカタログデータを含むCommerce環境を指定します。例えば、*HabitatAuthoring*環境です。
    
4.  **ヘッダー**タブでは、展開に必要な以下のキー値を指定します:
    
    ヘッダーキー
    
    価値
    
    ShopName
    
    {{ShopName}}
    
    ShopperId
    
    {{ShopperId}}
    
    Language
    
    {{Language}}
    
    Currency
    
    {{Currency}}
    
    Environment
    
    {{Environment}}
    
    GeoLocation
    
    {{GeoLocation}}
    
    CustomerId
    
    {{CustomerId}}
    
    Authorization
    
    {{SitecoreIdToken}}
    
5.  **ボディ**タブで、特定の要件に応じてエクスポート設定を変更してください。以下はデフォルトの設定です:
    
    {
    "fileName":"ExportCatalogs.zip",
    "mode":"full",
    "maximumItemsPerFile":"200",
    "excludeInventory":false
    }
    
    excludeInventoryパラメータがtrueに設定されている場合、ExportCatalog通話には在庫情報が含まれません。
    
6.  カタログエクスポート操作を開始するには、**Send**をクリックしてください。
    
7.  この手順は、Sitecore Commerceのデプロイメントからエクスポートしたい追加のカタログごとに繰り返します。
    
    > !注エクスポート操作中に情報を収集するログリングを設定している場合は、ログレベルを元の値に戻してください(例えば、"Information"から"Warning"まで)。
    
    ### 注意
    
    すべてのカタログをエクスポートし終えた後(関連するインベントリデータがエクスポートできない場合)、以前変更した設定を[IIS Managerとweb.configファイルで](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/walkthrough--exporting-catalog-and-inventory-data.html#UUID-c24ff065-f06a-fabd-015e-8e8fe5187456_section-idm46353697809312 "Modify the Internet Information Services (IIS) related settings ") 元の数値に戻す必要があります。
    
    それ以外は[、在庫データのエクスポート](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/walkthrough--exporting-catalog-and-inventory-data.html#UUID-c24ff065-f06a-fabd-015e-8e8fe5187456_section-idm253080990969000 "Export a Commerce inventory set")を進めてください。
    

### BashスクリプトでcURLを使ったカタログデータのエクスポート例

以下の例は、Postmanツールを使ってHTTPリクエストを送信する代わりに、BashスクリプトのcURLコマンドを使ってカタログデータセットをエクスポートする方法を示しています。

> !注脚本を実行する前に、以下を務めなければなりません:
> 
> -   <YOUR HOSTNAME>の値を、デプロイメントでAuthoringサービスを実行しているCommerce Engineインスタンスの名前で更新してください(デフォルト値はlocalhost:5000)。
>     
> -   Authorizationリクエストヘッダーの値を有効なトークン値で更新します。
>     
> -   エクスポートに必要なカタログデータを含むCommerce環境名でEnvironmentヘッダーキーを更新してください。デフォルトではスクリプトは*HabitatAuthoring*環境を指定します。
>     
> -   ファイル権限を設定するにはchmod +x <your\_base\_script>.shを実行します。
>     
> -   スクリプトを修正して、マシン名やデプロイ環境に特有の情報を指定してください。
>     

#!/bin/bash

# Git Bash:
# $ chmod +x WebRequest\_ExportCatalogs.sh
# $ ./WebRequest\_ExportCatalogs.sh

curl --request POST \\
  --url 'https://<YOUR HOSTNAME>/api/ExportCatalogs%28%29' \\
  --output ExportCatalogs.zip \\
  --insecure \\
  --header 'Authorization: Bearer <YOUR TOKEN>' \\
 --header 'cache-control: no-cache' \\
 --header 'Content-Type: application/json' \\
 --header 'Currency: USD' \\
 --header 'CustomerId: CustomerId' \\
 --header 'Environment: HabitatAuthoring' \\
 --header 'GeoLocation: IpAddress=1.0.0.0' \\
 --header 'Language: en-US' \\
 --header 'ShopName: CommerceEngineDefaultStorefront' \\
 --header 'ShopperId: ShopperId' \\
 --data '{
 "fileName":"ExportCatalogs.zip",
 "mode":"full",
 "maximumItemsPerFile":"200"
}'
## 商業在庫セットをエクスポートする

カタログをエクスポートした後、エクスポートする在庫データがなければ関連する在庫セットをエクスポートできます。

この手順は、Sitecore Commerce Engine SDKに提供されている[Postmanサンプル](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/execute-sample-api-calls-in-postman.html "Execute sample API calls in Postman") を使用します。

> !注エクスポートインベントリAPIリクエストを実行する際にPostmanを使う代わりに、この[例](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/walkthrough--exporting-catalog-and-inventory-data.html#UUID-c24ff065-f06a-fabd-015e-8e8fe5187456_section-idm253080996029526 "Example of an inventory data export using cURL in a Bash script")はBashスクリプトでcURLコマンドを使う方法を示しています。

在庫セットデータをエクスポートするには:

1.  Sitecore Identityトークンが期限切れの場合は、新しいトークンを取得するために別のGetTokenリクエストを実行してください。
    
2.  **コレクション**のパネルで*InventoryAPISamples*コレクションを展開します。
    
3.  *インベントリ - API*フォルダを開き、Export Inventory Setsリクエストを選択します。
    
4.  **Environment**フィールドで、エクスポートしたいデータを含む環境(例えば*HabitatAuthoring*環境)を指定します。
    
5.  **ヘッダー**タブで、展開に必要な以下のキー値を入力してください:
    
    ヘッダーキー
    
    価値
    
    ShopName
    
    {{ShopName}}
    
    ShopperId
    
    {{ShopperId}}
    
    Language
    
    {{Language}}
    
    Currency
    
    {{Currency}}
    
    Environment
    
    {{Environment}}
    
    GeoLocation
    
    {{GeoLocation}}
    
    CustomerId
    
    {{CustomerId}}
    
    Authorization
    
    {{SitecoreIdToken}}
    
6.  在庫セットのエクスポートを開始するには、「 **Send**」をクリックしてください。
    
7.  この手順は、Sitecore Commerce展開にエクスポートしたい追加の製品在庫セットごとに繰り返します。
    
    ### 注意
    
    すべてのカタログのエクスポートが終わったら、[以前IISマネージャーとweb.configファイル](https://doc.sitecore.com/xp/ja/developers/101/sitecore-experience-commerce/walkthrough--exporting-catalog-and-inventory-data.html#UUID-c24ff065-f06a-fabd-015e-8e8fe5187456_section-idm46353697809312 "Modify the Internet Information Services (IIS) related settings ") で変更した設定を元の値に戻す必要があります。
    
    > !注エクスポート操作中に情報を収集するログリングを設定している場合は、ログレベルを元の値に戻してください(例えば、"Information"から"Warning"まで)。
    

### BashスクリプトでcURLを使ったインベントリデータエクスポートの例

以下は、Postmanツールを使ってHTTPリクエストを送信する代わりに、BashスクリプトのcURLコマンドを使って在庫セットをエクスポートする方法の例を示しています。

> !注脚本を実行する前に、以下を務めなければなりません:
> 
> -   <YOUR HOSTNAME>の値を、デプロイメントでAuthoringサービスを実行しているCommerce Engineインスタンスの名前で更新してください(デフォルト値はlocalhost:5000)。
>     
> -   Authorizationリクエストヘッダーの値を有効なトークン値で更新します。
>     
> -   エクスポートするデータを含むCommerce環境名でEnvironmentヘッダーキーを更新してください。デフォルトではスクリプトは*HabitatAuthoring*環境を指定します。
>     
> -   ファイル権限はコマンドchmod +x <your\_base\_script>.shを実行することで設定します。
>     
> -   スクリプトを修正して、マシン名や環境、またはデプロイに特有の情報を指定してください。
>     

#!/bin/bash

# Git Bash:
# $ chmod +x WebRequest\_ExportInventorySets.sh
# $ ./WebRequest\_ExportInventorySets.sh

curl --request PUT \\
 curl --request POST \\
  --url 'https://<YOUR HOSTNAME>/api/ExportCatalogs%28%29' \\
  --output ExportCatalogs.zip \\
  --insecure \\
  --header 'Authorization: Bearer <YOUR TOKEN>' \\
 --header 'cache-control: no-cache' \\
 --header 'Content-Type: application/json' \\
 --header 'Currency: USD' \\
 --header 'CustomerId: CustomerId' \\
 --header 'Environment: HabitatAuthoring' \\
 --header 'GeoLocation: IpAddress=1.0.0.0' \\
 --header 'Language: en-US' \\
 --header 'ShopName: CommerceEngineDefaultStorefront' \\
 --header 'ShopperId: ShopperId' \\
 --data '{
 "fileName":"ExportInventorySets.zip",
 "mode":"full",
 "maximumItemsPerFile":"200"
}'

## 生成されたデータ構造

カタログや在庫データをエクスポートすると、操作は特定の形式のデータを含むZIPファイルを生成します。システムはデータをインポートする際に同じデータ構造を期待します。

ZIPファイルには、エクスポートされたCommerceエンティティを定義する複数のJSONファイルが含まれており、JSONオブジェクトとして表現されます。各ファイル名はエンティティタイプを識別します。例えば、Category.1.jsonというファイルはカテゴリエンティティのリストの最初のページをJSONシリアル化形式で含んでいます。

> !注カタログエクスポート機能は完全なカタログデータのエクスポートのみをサポートします。カタログデータは後でシステムにインポートできる.zipファイルにエクスポートされます。ファイル内のすべてのアイテムが並行でインポートされるため、パフォーマンス向上のために各ファイルでコマース関連エンティティの数が少なくまとめられます。

ZIPファイルには、ルートレベルのJSONファイル内のエンティティ間の関係を定義するJSONファイルのセットを含む*Relationships*フォルダも含まれています。ファイル名は関係タイプとソースエンティティを示し、ファイル自体にはJSONオブジェクトのリストが含まれています。各JSONオブジェクトは、ソースエンティティ、ターゲットエンティティ、そしてそれらの間の関係の種類を定義します。

例えば、CatalogToCategory.Habitat\_Master.1.jsonというファイルには、Habitat\_Masterカタログとカタログ内のカテゴリとの関係に関する情報が含まれています。

{
 $type : Sitecore.Commerce.Plugin.Catalog.RelationshipArgument, Sitecore.Commerce.Plugin.Catalog
 "SourceName": "Entity-Catalog-Habitat\_Master",
 "TargetName": "Entity-Category-Habitat\_Master-Assortments",
 "RelationshipType": "CatalogToCategory"
},
{
 $type : Sitecore.Commerce.Plugin.Catalog.RelationshipArgument, Sitecore.Commerce.Plugin.Catalog
 "SourceName": "Entity-Catalog-Habitat\_Master",
 "TargetName": "Entity-Category-Habitat\_Master-Departments",
 "RelationshipType": "CatalogToCategory"
},
{
 $type : Sitecore.Commerce.Plugin.Catalog.RelationshipArgument, Sitecore.Commerce.Plugin.Catalog
 "SourceName": "Entity-Catalog-Habitat\_Master",
 "TargetName": "Entity-Category-Habitat\_Master-FeaturedProducts",
 "RelationshipType": "CatalogToCategory"
}