Salesforce記録⑦:salesforce データローダとデータインポートウィザードについて(2024)

### 1.Java JDKのインストールと環境変数の設定

①まず、Java JDKをインストールし、関連する環境変数を適切に設定します。
OracleのJavaダウンロードページから適切なJDKバージョンをダウンロードします。

➁ダウンロードしたインストーラを実行し、指示に従ってインストールを完了します。
インストールが完了したら、JDKのbinディレクトリをシステムのPATH環境変数に追加します。

③設定が正しいことを確認するために、コマンドプロンプトでjava -versionを入力し、JDKのバージョン情報が表示されることを確認します。
### 2.Data Loaderのインストール

Data Loaderのインストールパッケージをダウンロードします。
以下のリンクからData Loaderのインストールパッケージをダウンロードします：
https://developer.salesforce.com/docs/atlas.en-us.dataLoader.meta/dataLoader/loader_install_mac.htm
https://developer.salesforce.com/tools/data-loader
ダウンロードしたインストーラを実行し、指示に従ってData Loaderをインストールします。
Javaの設定が正しくない場合の対処

javaコマンドが正しく動作しない場合、Data Loaderのデフォルト設定に問題がある可能性があります。
この場合、Data Loaderの関連設定ファイルを編集し、正しいJavaのパスを設定する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/011da646-b1aa-b635-2517-33f438240829.png)

### 3.DataLoaderの使用
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/a5f329ed-937e-df87-138d-fa8535964446.png)

認証方法は二つ,browerから登録及びID,Passwordで登録
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/f916579c-c9a0-2324-f8dd-6b0b59de3d63.png)

##### ①Insert
Insert buttonをクリック、下記の画面が出る。オブジェクトを選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/7053a7a6-2b6e-2698-6fe0-21664c6cbcfa.png)

用意したCSVファイルを選択して
Format例：
```
header1,header2,header3,header4,header5
XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX
```



headerはsalesforceオブジェクト項目のAPI名称と一致

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/fe3c4f38-0f8c-1a68-2ffd-0f4fe4511887.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/6a6fcdd2-fd3e-53af-ba1a-349a3467557f.png)

##### ➁Update

基本Insertと同様。
CSV ファイルFormat例:
``` CSV
Id,header1,header2,header3,header4,header5
XXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX
```
Idは必要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/818b4d85-e386-9a5a-4314-fa5ae2f408be.png)

##### ③Delete

基本Idがあれば、具体的な操作とupdate一致
CSV ファイルFormat例:
``` CSV
Id
XXXXX
XXXXX
```
##### ④Export
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/8e1ed897-6597-36fc-8304-178be5e664a3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/9c195030-262c-2c08-fa93-fac3ab78baf3.png)

SQL文自動生成や手動入力
できればorder by を末尾に追加

##### ⑤Upsert

基本とUpdateと一致

CSVファイルを作成するときのポイント

1.「ID」の項目または外部キーによりレコードと紐付けを行っているので「ID」項目または外部キーは必須
2.CSVファイルの中に必ずしも全ての項目が入っている必要はない
3.項目名はExportしたときのものをそのまま使う

IDを使う場合；　
CSV ファイルFormat例:
``` CSV
Id,header1,header2,header3,header4,header5
XXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX
XXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/08cb1521-db99-367f-1f13-acd27f9ef37d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/25aa300c-d90b-a686-c5a1-f23db6de658c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/4cf70754-6108-8cff-abd7-1add9560dfbf.png)

IDまたは、外部キーとして作成している項目により紐付けを行います。
ここでは、どちらをキーとして紐付けを行うかを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/c5ec85e8-8d00-6eaf-5250-38cf58e22665.png)

External_IDを使う場合；Idは必要ない
CSV ファイルFormat例:
``` CSV
header1,External_ID,header2,header3,header4,header5
XXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX
XXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX
```
:::note info

外部IDの条件と注意点

1.フィールドタイプ：
外部IDフィールドは、テキスト、数値、またはメールアドレスタイプのフィールドにすることができます。
外部オブジェクトを使用する場合、複合フィールド（例えば、複合キー）も外部IDとして設定できます。

2.一意性：
外部IDフィールドは一意である必要があります。これにより、Salesforce内の各レコードが一意に識別されます。フィールドを作成する際に「一意」のチェックボックスを選択することで、この一意性を強制できます。

3.インデックス：
外部IDフィールドはインデックス化されており、これによりクエリのパフォーマンスが向上します。

4.データ型の一致：
外部システム内の対応するフィールドのデータ型とSalesforce内の外部IDフィールドのデータ型が一致していることを確認します。例えば、外部システムが数値タイプのIDを使用している場合、Salesforceの外部IDフィールドも数値タイプにする必要があります。

5.空値の禁止：
外部IDフィールドには空値を含めないようにします。空値があると、レコードを一意に識別することができなくなります。

6.同期と統合：
外部IDはデータの同期および統合シナリオでよく使用されます。例えば、外部のデータベースやアプリケーションとのデータ統合の際に使用されます。したがって、統合ニーズを考慮して外部IDフィールドを設計することが重要です。

7.APIの制限：
APIを介してデータ操作を行う際、外部IDフィールドを使用してupsert操作（レコードが存在する場合は更新し、存在しない場合は挿入）を行うことができます。これはデータ同期に非常に便利です。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/36572b3c-19d0-982b-da66-824164b88874.png)


### 4.データインポートウィザードの使用
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/4ec13c85-e98d-3a79-cb95-027040d39c67.png)

50000件まで
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/0dfe6d89-23ec-fe4b-1e43-6699bd84e382.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/52a4b9f8-efa2-6352-8fee-81dfa8fdd22a.png)

Insert はName と外部ID選択可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/732e34ec-ba83-e4e7-3749-ffa7ed1ff0fe.png)

Update はName と外部IDとID　選択可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/e28963ba-ed8b-dbce-65e2-41379fdd2023.png)

Upsert はName と外部IDとID　選択可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/e3b47ee2-e80d-c5ac-d9f5-a5bc716450ea.png)

UTF8を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/95ee4bd8-188a-f707-040b-9124c975dcd4.png)

対応付けの一括処理が無いみたい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3802240/1ef057bf-cd1d-a3e6-9609-c0c0601c0413.png)

:::note info

DataLoader、ウィザード基本の作動原理はSalesforce batchを使う

Dataloaderの主な特徴:
1.5,000,000レコードまでの大規模ファイルにも対応している(versionにより)
2.ドラッグアンドドロップで項目の関連付けができる
3.カスタムオブジェクトを含む全オブジェクトのサポートしている
4.CSVファイル形式で成功またはエラーの詳細ログが取得できる
5.Windows および Mac の両方をサポートしている
6.Data Loader のデフォルトのバッチサイズは200レコードです。この値はData Loaderの設定で変更できますが、最大は200レコードです。
(一つトランザクションの処理制限により設定されたと思う、ランザクションの処理制限について、< Salesforce記録① > を参考してください)
(triggerがあれば、毎回取得の件数は200件まで）
7.総データ量の制限：
Salesforce には24時間あたりのAPIコール数に対する制限があります。この制限は、Salesforceのエディションやユーザー数によって異なります。制限を超えると、次の配分期間までAPIコールができなくなります。

ウィザード:
1.最大レコード数：Salesforce Data Import Wizard を使用して一度にインポートできる最大レコード数は50,000件です。
2.デフォルトのバッチサイズは200レコードです。
(triggerがあれば、毎回取得の件数は200件まで）
:::