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

例: 組織間でのデータのエクスポートとインポート

アプリケーションをテストするための完璧なデータセットを作り上げ、それが現在はデフォルトのスクラッチ組織にあるとします。そして、新しいスクラッチ組織でテストしたい新機能のコーディングが完了しました。そこで、スクラッチ組織を作成し、ソースコードを転送し、必要な権限セットを割り当てました。次は、このスクラッチ組織にもう一方の組織からあの完璧なデータセットを入力したいのですが、どうすればよいでしょうか? それをこれから説明します。

この使用事例では、Salesforce DX Github の DreamHouse の例での Broker と Properties のカスタムオブジェクトを参照します。データのエクスポート元となる最初の組織では、DreamHouse ソースから転送することによって 2 つのオブジェクトを作成済みであることを前提とします。また、権限セットも割り当て済みであり、オブジェクトにはデータが入力済みであるものとします。一方、2 番目のスクラッチ組織では、2 つのオブジェクトが作成済みで権限セットも割り当て済みですが、データは入力されていないものとします。これらの作業の手順については、GitHub の dreamhouse-sfdx サンプルの README を参照してください。

  1. デフォルトスクラッチ組織のデータをエクスポートします。

    force:data:soql:query コマンドを使用して SELECT クエリを微調整し、エクスポートするデータセットを正確に返すようにします。このコマンドは結果をターミナルまたはコマンドウィンドウに出力しますが、組織内のデータは変更しません。SOQL クエリは長いので、読みやすくするためにコマンドはバックスラッシュで分割されています。そのままでもコマンドを切り取ってターミナルウィンドウに貼り付けて実行できます。

    1sfdx force:data:soql:query --query \
    2      "SELECT Id, Name, Title__c, Phone__c, Mobile_Phone__c, \
    3              Email__c, Picture__c, \
    4       (SELECT Name, Address__c, City__c, State__c, Zip__c, \
    5               Price__c, Title__c, Beds__c, Baths__c, Picture__c,  \
    6               Thumbnail__c, Description__c \
    7        FROM Properties__r) \
    8       FROM Broker__c"
  2. SELECT ステートメントに満足したら、それを使用してデータを JSON ファイルセットにエクスポートします。
    1sfdx force:data:tree:export --query \
    2      "SELECT Id, Name, Title__c, Phone__c, Mobile_Phone__c, \
    3              Email__c, Picture__c, \
    4       (SELECT Name, Address__c, City__c, State__c, Zip__c, \
    5               Price__c, Title__c, Beds__c, Baths__c, Picture__c,  \
    6               Thumbnail__c, Description__c \
    7        FROM Properties__r) \
    8       FROM Broker__c" \
    9     --prefix export-demo --outputdir sfdx-out --plan

    export コマンドは JSON ファイルを sfdx-out ディレクトリ (現在のディレクトリ内) に書き込み、各ファイル名に export-demo という文字列をプレフィックスとして追加します。ファイルの中にはプラン定義ファイルが含まれ、このファイルが、データが含まれる他のファイル (エクスポートされたオブジェクトごとに 1 つずつ) を参照します。

  3. プラン定義ファイルを指定することによって新しいスクラッチ組織にデータをインポートします。
    1sfdx force:data:tree:import --targetusername test-wvkpnfm5z113@example.com \
    2    --plan sfdx-out/export-demo-Broker__c-Property__c-plan.json

    --plan パラメータを使用して、force:data:tree:export コマンドによって生成されたプラン実行ファイルのフルパス名を指定します。プラン実行ファイル名の末尾は常に -plan.json になります。

    上の例では、デフォルトではないスクラッチ組織にインポートするため、--targetusername オプションを使用する必要があります。force:org:list コマンドを使用すると、すべてのスクラッチ組織とそのユーザ名および別名が表示されます。また、force:config:set を使用して、新しいスクラッチ組織をデフォルトに設定することもできます。

  4. (省略可能) 新しいスクラッチ組織を開き、Salesforce UI と SOQL を使用してインポートされたデータをクエリします。
    1sfdx force:org:open --targetusername test-wvkpnfm5z113@example.com

    スクラッチ組織のユーザ名に別名を設定した場合は、それを --targetusername パラメータに渡すことができます。

    1sfdx force:org:open --targetusername <alias>