Notionシステム研究所 > NotionにCSVを取り込む方法|既存行を更新したいときの差分管理

NotionにCSVを取り込む方法|既存行を更新したいときの差分管理

2026年10月22日

•約8分で読めます

NotionのCSVインポートと既存行の更新は別の処理です。文字化け・日付・先頭ゼロへの対処、外部IDによる照合、空欄の扱い、更新前の差分表と取り消し方法を具体例で解説します。

Notion
CSV
インポート
データ更新

毎月届くCSVをNotionへ取り込みたい。前月と同じ顧客は情報だけ更新し、新しい顧客だけ追加したい。こうした用途では、CSVのインポート機能だけで済ませようとすると、同じ顧客の行が増えてしまいます。

Notion標準のCSVインポートと「CSVとマージ」は、既存行を照合して更新する機能ではありません。 公式ヘルプでも、CSVは行を追加する方式だと説明されています。初回の移行と、2回目以降の差分更新を分けて考えましょう。Notion公式:データのインポート

この記事では、顧客一覧の取り込みを例に、重複を増やさず更新する手順を説明します。複数のNotion DBそのものをまとめたい場合は、データベース結合の使い分けを参照してください。

初回のインポートと継続更新で方法を変える

目的 選ぶ方法 作業の中心
CSVから初めてDBを作る Notionのインポート 列の型と取り込み結果の確認
既存DBへ新しい行だけ追加する CSVとマージ 追加対象だけのCSVを用意する
同じ顧客の住所や分類を変更する 少数なら手動、多数ならAPI等 顧客IDによる照合と変更箇所の更新
CSVにない顧客を整理する 別途、停止候補を確認する ファイルに載らない理由の確認

月に数件の変更なら、差分表を見ながら手動で直す方が、連携の開発・保守を含めると短時間で済むこともあります。自動化を考えるのは、変更件数、頻度、取り違えた場合の影響が大きくなってからで構いません。

初回は5行だけ取り込み、列の型を確認する

CSVの1行目には列名を置き、文字コードはUTF-8にします。空の検証用ページでNotionのインポートからCSVを選び、列を対応付けます。既存DBへ追加する場合は、フルページでDBを開き、メニューの「CSVとマージ」を使います。

最初の5行には、あえて次のような値を含めます。

確認する列 値の例 確認すること
顧客ID 00027 テキストとして先頭のゼロを保持しているか
会社名 株式会社サンプル,東日本 カンマを含む値が別列へ割れていないか
契約開始日 10/22/2026 意図した年月日になっているか
郵便番号 001-0001 数値に変換されていないか
備考 改行を含む文章 1件の値として取り込めているか

日付の解釈を推測で進めないようにします。公式のCSV案内では MM/DD/YYYY が示されていますが、元データの表記を変える場合も、必ず検証用の数行で確認してください。数式やロールアップをCSVからそのまま再現することもできません。計算結果を持ち込むのか、Notion側で計算し直すのかを決めます。Notion公式:CSVの制約とトラブル対処

元のCSVは保管し、Notion用に加工したファイルを別名で作ると、文字化けや列ずれが起きたときに原因を戻って調べられます。

更新の照合には、会社名ではなく顧客IDを使う

会社名は表記揺れや社名変更があり、同名の会社も存在します。照合には、元システムで変わらない顧客IDを使います。Notionには「外部顧客ID」というテキスト列を用意し、1顧客につき1つの値を持たせます。

以下は架空の入力例です。

external_id,company_name,segment
C-001,青空商事,継続
C-002,白波工業,新規
C-003,山の手企画,

NotionにC-001とC-003があり、C-002がなければ、C-002だけが新規候補です。C-001は値を比較して変更がある列だけ更新し、C-003の空欄はあらかじめ決めたルールで扱います。

CSV内で同じIDが2回現れる場合や、Notionで同じIDが2件見つかる場合は、そのIDを保留にします。「最初に見つかった行」を更新すると、誤った重複行が正しい情報であるかのように残ってしまいます。

書き込む前に、追加・変更・保留の一覧を作る

更新処理を作るときは、最初に書き込みなしで差分を出す機能を用意します。次は、確認用の一覧例です。

外部顧客ID 判定 変更内容 理由
C-001 更新 分類:新規 → 継続 既存1件、値に差分あり
C-002 追加 会社名・分類を新規登録 既存0件
C-003 変更なし 分類は維持 今回は空欄を未指定として扱う
C-004 保留 書き込まない Notionに同じIDが2件ある

空欄を「消す」と解釈するか、「今回のCSVでは指定しない」と解釈するかは、列ごとに決めます。たとえば元システムの住所が空欄ならNotionの住所も消す必要がある一方、担当者の補足メモを空欄で消してはいけません。

更新対象の列を「会社名・分類・元システム更新日」に限定し、Notionで書く「面談メモ・次回対応」は処理の対象外にします。列単位の役割を決めると、人が追記した情報を上書きしにくくなります。

APIで更新する場合の処理順

継続更新を実装するなら、次の順で処理します。

  1. CSVを読み、必須ID・重複ID・列名・値の型を検査する。
  2. Notionの対象データソースから、外部IDとページIDを取得する。
  3. 追加・更新・変更なし・保留に分類し、確認用の差分表を作る。
  4. 確認した範囲だけ書き込み、結果を元のCSV行と対応付けて保存する。
  5. 書き込み後に値を読み直し、予定した変更と一致するか確かめる。

現行APIでDB内の行を検索する際は、データソースのクエリを使います。DBの入れ物のIDと、行を持つデータソースのIDは区別してください。取得結果に続きがある場合は、カーソルを使って最後まで取得します。Notion API:データソースの検索

既存行の更新には、その行のページIDを使います。列の値を変えるだけなら、ページ本文を作り直す必要はありません。Notion API:ページの更新

複数の処理を同時に走らせると、両方が「既存0件」と判断して重複作成する可能性があります。まず1つの実行に絞り、再実行前にも同じ外部IDを照合します。処理が途中で止まった場合は、全件を新規追加し直さず、結果不明の行から確認してください。

CSVから消えた行を、自動削除しない

今月のCSVにC-005がないとしても、解約とは限りません。抽出条件の変更、対象期間の違い、出力漏れなども考えられます。

継続運用では、Notionに「今回のファイルで確認できた日」を持たせ、長く現れない行を確認用ビューに出す方法が使えます。停止が確認できた段階で「取引終了」などへ変更し、面談履歴や関連案件は保持します。

取り込みを取り消せるよう、実行ごとにファイル名・実行日時・ページID・変更前後の値を記録します。ただし、更新後に人が編集した列を無条件で元に戻すと、その編集まで消えてしまいます。戻す前にも現在値を確認し、今回の取り込みが書いた値から変わっていない列だけを対象にします。

重複を作ってしまったときの戻し方

まず次の取り込みを止め、追加された日時と件数を確認します。そのうえで、重複行に新しいコメント・本文・リレーションが付いていないか調べます。既存の正しい行へ必要な情報を移し、確認できた重複行を整理してください。

タイトルが同じという理由だけで一括削除するのは避けます。正しい照合IDがまだない場合は、元CSVと照らし合わせて対応を付ける作業が先です。

初回の5行取り込みで型を確認し、2回目に同じファイルを処理しても件数が増えないことを確かめる。この2回の確認が、毎月のCSV更新を安定させる出発点になります。

無料PDF・全16ページ

Notion AI 業務連携ホワイトペーパー

Notion AIの業務連携を、図解で具体的に。

業務連携の構成例から、freee・kintoneとの役割分担、費用・権限のチェックリスト、小さな試行の進め方まで全16ページにまとめました。

無料PDF資料。Notion AIが、ツールをつないで仕事を進める。業務連携の構成例と費用・権限のチェックリスト。無料で資料を受け取る。
著者・運営会社
著者
守高 成悟
守高 成悟

代表取締役 CEO

千葉県出身。10歳の頃からプログラミングを始め、ゲーム、Webサイト、ロボット、スマホアプリなどを制作。大阪大学基礎工学部情報科学科で情報工学と統計学を学び、大学時代はAIを研究。大学在学中にWeb広告代理店でのインターンや人材系Webサービスの立ち上げを経験し、卒業後はフリーランスエンジニアとしてGISシステム、データ基盤構築、Webシステムの開発に従事。10年以上のWebアプリ開発・データ分析経験を基に、2023年9月に株式会社ビットライトを設立し、現場業務の仕組み化からデータ基盤構築、データ活用支援までを一気通貫で支援。

運営会社
株式会社ビットライト
株式会社ビットライト

顧客が本当に必要だった価値を、実装する。

現場業務の仕組み化からデータ基盤構築、データ活用支援までを一気通貫で支援しています。

コーポレートサイトを見る