例: 組織間でのデータのエクスポートとインポート
この使用事例では、Salesforce DX Github の DreamHouse の例での Broker と Properties のカスタムオブジェクトを参照します。データのエクスポート元となる最初の組織では、DreamHouse ソースから転送することによって 2 つのオブジェクトを作成済みであることを前提とします。また、権限セットも割り当て済みであり、オブジェクトにはデータが入力済みであるものとします。一方、2 番目のスクラッチ組織では、2 つのオブジェクトが作成済みで権限セットも割り当て済みですが、データは入力されていないものとします。これらの作業の手順については、GitHub の dreamhouse-sfdx サンプルの README を参照してください。
-
デフォルトスクラッチ組織のデータをエクスポートします。
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" -
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 --planexport コマンドは JSON ファイルを sfdx-out ディレクトリ (現在のディレクトリ内) に書き込み、各ファイル名に export-demo という文字列をプレフィックスとして追加します。ファイルの中にはプラン定義ファイルが含まれ、このファイルが、データが含まれる他のファイル (エクスポートされたオブジェクトごとに 1 つずつ) を参照します。
-
プラン定義ファイルを指定することによって新しいスクラッチ組織にデータをインポートします。
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 を使用して、新しいスクラッチ組織をデフォルトに設定することもできます。
-
(省略可能) 新しいスクラッチ組織を開き、Salesforce UI と SOQL を使用してインポートされたデータをクエリします。
1sfdx force:org:open --targetusername test-wvkpnfm5z113@example.comスクラッチ組織のユーザ名に別名を設定した場合は、それを --targetusername パラメータに渡すことができます。
1sfdx force:org:open --targetusername <alias>