0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Salesforce】Data Loaderで日付が勝手に変換される問題の解決法

Posted at

TL;DR

  • ExcelでCSVを開くと日付や日付/時間が自動変換されてData Loaderでエラーになる
  • 両方とも YYYY-MM-DDT00:00:00 形式にすれば解決
  • Data Loaderは時刻部分を自動で無視して日付のみ保存
  • Excelでは文字列扱いになり自動変換されない

各ツールの問題詳細

1. MacのNumbersは非推奨

症状:

CSV Error: Invalid CSV file format.
Current delimiters are ',' '<tab>'

原因:

  • Numbersで開くと日付形式は保持される ✅
  • しかしCSV出力時に、データローダとの相性問題が発生

2. Excelの問題

症状:

Error: Failed to parse date: 2025/10/7 14:33

原因:

  • Excelで開くと自動的に日付が変換される
  • 2021-03-192021/3/19 (月日が1桁に)
  • 2025-10-07 14:302025/10/7 14:30 (月日が1桁に)
  • Data Loaderは厳密なフォーマットを要求するためエラー

3. Googleスプレッドシートの問題

症状:

  • 大量データ(7万件以上)だとインポート時に重すぎて開けない
  • または処理が遅すぎて実用的でない

一応の回避策:

ファイル → インポート → 
「テキストを数値、日付、数式に変換」のチェックを外す

ただし、大量データでは根本解決にならない。

4. VS Code / テキストエディタの問題

メリット:

  • 日付形式を壊さない ✅
  • 軽量で動作も速い ✅

デメリット:

  • データの確認・編集がしづらい
  • 7万件以上のデータを手作業で修正するのは現実的でない

💡 解決策:DateTime形式への統一

重要な発見

プロジェクト中に、日付/時間型の項目について発見がありました。

日付/時間型の場合:

LastModifiedDate
2025-10-21T14:30:00

→ Excelで開いても文字列として認識される

「ならば、日付型も同じ形式にしたらどうなる?」


実証:動作確認

テスト環境

  • オブジェクト: 取引先(Account)
  • 項目: データ型: date
  • データ件数: 88,983件

実験:日付型に DateTime 形式を入れる

CSV形式:

2021-03-19T00:00:00

Data Loaderでインポート実行

結果:

データ型: date
保存された値: 2021-03-19 ✅

重要なポイント:

  • ✅ 時刻部分(T00:00:00)は自動的に無視される
  • ✅ 日付部分だけが正しく保存される
  • ✅ Excelで開いても 2021-03-19T00:00:00 のまま(文字列扱い)
  • ✅ Data Loaderでエラーが出ない

統一フォーマットルール

すべての日付・日時項目を DateTime 形式に統一

EXCELのユーザー定義を右記: YYYY-MM-DDThh:mm:ss

【日付/時間型(DateTime)】
例: 2025-10-21T14:30:00

【日付型(Date)】
例: 2021-03-19T00:00:00

メリット

1. Excel問題の完全解決

  • ❌ 従来: 2021-03-192021/3/19 に自動変換
  • ✅ 今後: 2021-03-19T00:00:00 のまま(文字列扱い)

2. Data Loaderとの完全互換

  • ✅ 日付型も日付/時間型も同じ形式
  • ✅ パースエラーが出ない
  • ✅ 型の自動判別で正しく保存される

3. ツール間の互換性

  • ✅ Numbers、Excel、VS Code、どれで開いても同じ
  • ✅ データメンテナンスが楽
  • ✅ チーム内での混乱が減る

まとめ

Before(従来の方法)

CSVに日付を YYYY-MM-DD で記載
    ↓
Excelで開くと自動変換される
    ↓
Data Loaderでエラー
    ↓
手動で修正(途方もない作業)

After(この方法)

CSVに日付を YYYY-MM-DDT00:00:00 で記載
    ↓
Excelで開いても文字列のまま
    ↓
Data Loaderで正常にインポート
    ↓
完了! 🎉

統一ルール

すべての日付・日時項目を YYYY-MM-DDThh:mm:ss 形式に統一することで:

  • ✅ Excelの自動変換問題を回避
  • ✅ Data Loaderでのエラーをゼロに
  • ✅ チーム内でのデータ共有がスムーズ
  • ✅ 大量データでも安定動作

おわりに

日付型にも DateTime 形式を使うという単純な方法で、すべての問題が解決しました。

同じ悩みを持つSalesforce開発者の助けになれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?