初心者向け
n8n Data Tableの使い方
n8n の中に表を作って、ワークフローから検索・更新できる Data Table を、商品12件の表で動かして確かめました。条件を2つ書くと既定では「どちらか合えば」になること、大文字と小文字を区別すること、0件だと後ろのノードが動かないこと、前から2件入ると同じ検索が2回走ることを実測しています。
公開
動作確認: — n8n 2.36.8 / Data table ノード v1.1
Data Table は、n8n の中に表(行と列のあるデータ)を作って、ワークフローから検索したり書き換えたりできる機能です。 スプレッドシートやデータベースを別に用意しなくても、在庫の一覧や予約の枠のような小さな表なら、n8n の中で持てます。
商品12件の表で動かして分かったことは、次の4つです。
- 条件を2つ書くと、既定では「両方合う」ではなく「どちらか合う」になる
- 文字の比較は、大文字と小文字を区別する
- 1件も見つからないと、後ろのノードが動かない
- 前のノードから2件入ってくると、同じ検索が2回走り、結果も2倍になる
まず1回動かす
1. 表を作る
n8n の Data tables の一覧で新しいテーブルを作ります。CSV ファイルがあれば、そこから作るのが早いです。
- Data table name に表の名前(例:
products)を入れる - Import CSV を選んで、CSV ファイルを指定する
- My CSV file contains a header row にチェックが入っていることを確かめて Create
- 次の画面で列名と型が表示されるので、そのまま Create

CSV から作ったときは、列の型が自動で決まりました。数字だけの列は Number、それ以外は String です。 空のセルは「値なし(null)」として入りました。 これは後で効いてきます。
ここでは、家具店の商品12件(sku、name、category、color、width_cm、price、stock、note)の表を使います。
同じ見本データは メール対応自動化ワークフロー で配っています。
2. 検索する
- Manual Trigger の後ろに Data table ノードを置く
- Resource を Row、Operation を Get にする
- Data table で、作った表を選ぶ
- Add Condition で条件を1つ足し、Column を
category、Condition を Equals、Value をSofaにする - Execute step を押す
ソファ4件が、それぞれ1件のアイテムとして出てきました。各行には、表の列のほかに id、createdAt、updatedAt が自動で付いています。
条件を2つ書くと、既定は「どちらか合えば」
「ソファ」で、かつ「色がナチュラル」のものを探すつもりで、条件を2つ書きました。

結果は 8件でした。ソファ4件と、色がナチュラルのもの(テーブル、チェア、棚)4件が、どちらか一方に合えば全部出てきています。
原因は Must Match という設定です。既定値が Any Condition(どれか1つでも合えば)になっています。

All Conditions にすると、両方に合うものだけになり、結果は0件(ナチュラルのソファは無い)になりました。
比べ方の違い
Condition の比べ方によって、結果が変わりました。
| 条件 | 結果 |
|---|---|
category が Sofa と等しい(Equals) |
4件 |
category が sofa と等しい(小文字) |
0件。大文字と小文字を区別する |
category に %sofa% を含む(大文字小文字を区別しない比較、内部名 ilike) |
4件 |
stock が 2 より大きい(Value に文字で 2 と書いた) |
6件。数値の列には、文字で書いても数として比べた |
AIに取り出させた「商品の種類」で検索するときは要注意です。AIが sofa と小文字で返すと、表に Sofa があっても0件になります。
AIへの指示で、表に入っている言葉と同じ書き方で返すように決めておくか、大文字小文字を区別しない比べ方を使います。
大文字小文字を区別しない比較や「空かどうか」の比べ方は、Condition の一覧から選べます。一覧の表記は確かめていないので、ここでは中の名前(ilike、isEmpty)で書いています。
空に見える欄でも、2種類ある
note(備考)が空の商品を探しました。
| 条件 | 結果 |
|---|---|
空かどうか(内部名 isEmpty) |
0件 |
空の文字 "" と等しい |
8件 |
この表は、CSV ではなく Claude Code から1行ずつ追加して作ったもので、空の備考には空の文字 "" が入っていました。「空かどうか」では見つかりませんでした。
先に書いたとおり、CSV から作ると空のセルは値なし(null)になります。同じ「空」でも、表の作り方で中身が違います。
CSV から作った表で「空かどうか」がどう効くかは、試していません。
1件も見つからないと、後ろが止まる
存在しない Bed で検索すると、Data table ノードは何も出さず、その後ろのノードは一度も動きませんでした。エラーも出ません。
ノードの Settings で Always Output Data をオンにすると、0件のときに中身が空のアイテムを1件出すようになり、後ろも動きました。
前から2件入ると、同じ検索が2回走る
Data table ノードの前に、2件のアイテムを出すノードを置いて、同じ検索(ソファ)をしました。
結果は 8件。ソファ4件が2回分です。 Data table ノードは、入ってきたアイテム1件ごとに検索をやり直します。設定の Limit Per Input Row(入ってきた1件あたりの上限、既定50件)という名前も、この作りを表しています。
前のノードが複数件を出すときは、検索の前に1件にまとめるか、後ろで重なりを取り除く必要があります。
行を書き換える(Update)
予約が入ったら、来店枠の booked(予約済みの数)を1増やす、という更新を試しました。
- Get で、書き換えたい行(16時の枠)を取る
- 後ろに Data table ノードを置き、Operation を Update にする
- 条件で
idが{{ $json.id }}(前で取った行の id)と等しいものを選ぶ - 書き換える列
bookedに{{ $json.booked + 1 }}を入れる
booked が 1 から 2 に変わり、updatedAt も更新されました。書き換えた後の行が、そのまま出力に出てきます。
同じ枠に、ほぼ同時に2件の予約が入った場合に、両方とも正しく数えられるかは試していません。
確認していないこと
- 表の行数が多いとき(数千行以上)の速さは見ていません
- 行の追加(Insert)、追加か更新か(Upsert)、削除(Delete)は試していません
- 同時に書き換えたときの動きは見ていません
- Condition の一覧の表記は確かめていません(大文字小文字を区別しない比較、空かどうか)
次に読む
- Data Table を検索して、AIに返事の下書きを書かせる実例は メール対応自動化ワークフロー
- 0件のときに後ろが止まって、問い合わせが放置された記録は メール対応自動化で詰まったこと
- 検索のあとで、複数の行を1件にまとめるのは Aggregateノードの使い方
- n8n で業務を自動化した例のまとめは n8n 業務自動化の実例