🗄️
外部REST APIからデータを取得してDBに保存する
HTTP Requestノードで外部REST APIからJSONデータをページネーション付きで取得し、PostgreSQLデータベースへ自動保存するデータ取り込みワークフロー。
ユースケース概要
外部サービスのREST APIから全データをページネーション付きで取得し、PostgreSQLにupsert保存する。毎日定期実行で最新データを同期する。
解決する課題: 外部APIのデータを手動でExportせずに自動的にDB同期し、常に最新データを社内で利用できるようにする
使用するn8nノード:
- Schedule Trigger(毎日実行)
- HTTP Request(ページネーション付きAPI呼び出し)
- Code(データ正規化)
- PostgreSQL(upsert保存)
ワークフロー構成
[Schedule Trigger: 毎日02:00]
↓
[HTTP Request: 外部API(全ページ自動取得)]
↓
[Code: データ正規化・型変換]
↓
[PostgreSQL: UPSERT(重複時は更新)]
実装手順
Step 1: Schedule Triggerの設定
Rule: Every Day
Hour: 2
Minute: 0
夜間バッチとして実行。
Step 2: HTTP Requestのページネーション設定
Method: GET
URL: https://api.example.com/v1/products
Pagination:
Pagination Mode: Update a Parameter
Parameter Type: Query
Parameter Name: page
Initial Value: 1
Increment By: 1
Complete When:
Type: Receive Specific Status Code
Status Code: 204
または
Type: Other
Expression: {{ $response.body.data.length === 0 }}
Step 3: データ正規化(Codeノード)
return $input.all().map(item => ({
json: {
external_id: String(item.json.id),
name: item.json.name?.trim() ?? '',
price: Number(item.json.price) || 0,
category: item.json.category ?? 'uncategorized',
updated_at: new Date(item.json.updated_at).toISOString(),
raw_data: JSON.stringify(item.json)
}
}));
Step 4: PostgreSQLへのUPSERT
INSERT INTO products (external_id, name, price, category, updated_at, raw_data)
VALUES ($1, $2, $3, $4, $5, $6)
ON CONFLICT (external_id)
DO UPDATE SET
name = EXCLUDED.name,
price = EXCLUDED.price,
category = EXCLUDED.category,
updated_at = EXCLUDED.updated_at,
raw_data = EXCLUDED.raw_data
PostgreSQLノードの設定:
Operation: Execute Query
Query: 上記SQL
Parameters:
$1: {{ $json.external_id }}
$2: {{ $json.name }}
... (各フィールド)
ポイント・注意事項
- HTTP Requestのページネーション自動処理を使うと、全ページを自動で取得してitemとして展開できる
ON CONFLICT ... DO UPDATE(UPSERT)を使うことで冪等性を保つ。何度実行しても同じ結果になる- 大量データ(10万件以上)の場合はバッチサイズを設定し、メモリ超過を防ぐ
関連機能
- 1. 🔄n8n概要 - ワークフロー自動化プラットフォーム
- 2. ⚙️n8nワークフローの基本(ノード・コネクション・実行)
- 3. ⚡n8nトリガーの種類(Webhook・スケジュール・イベント)
- 4. 🔀n8nロジック制御(フィルター・条件分岐・ループ・マージ)
- 5. 🌐n8n HTTP Request・API連携
- 6. 🔗n8n主要インテグレーション(Slack・Gmail・GitHub)
- 7. 🛡️n8nエラーハンドリング・デバッグ
- 8. 🤖n8n AI・LLMエージェント(Chain・Agent)
- 9. 💻n8n Codeノード・カスタム処理
- 10. 🏢n8nエンタープライズ機能(ソース管理・シークレット・チーム管理)
- 11. 🌤️毎朝SlackにAIで天気・ニュースを通知する
- 12. 📊GitHubのPRをGoogleシートに自動記録する
- 13. 📧新規ユーザー登録時にWelcomeメールを自動送信する
- 14. 💳StripeのWebhookで決済完了を検知して処理する
- 15. 📈スケジュールトリガーで週次レポートを自動生成する
- 16. 🎫Gmailトリガーでサポートメールを自動Notionチケット化する
- 17. 🎯条件分岐でリード属性に応じて担当者を振り分ける
- 18. 📨ループ処理でリストを走査し一括メール送信する
- 19. 📋複数APIのデータをマージして統合レポートを作成する
- 20. 🗄️外部REST APIからデータを取得してDBに保存する
- 21. 🔍GraphQL APIでGitHubのIssueを取得・加工する
- 22. 🔐Bearer認証付きAPIを呼び出してデータ同期する
- 23. ✅SlackとNotionを連携したチームタスク管理フロー
- 24. 🤝GmailとHubSpotを連携したCRM自動化フロー
- 25. 🚀GitHubデプロイイベントをSlackに通知する
- 26. 🚨APIエラー発生時にSlackへアラートを送る
- 27. 🔁リトライ付きの堅牢なデータ同期フローを構築する
- 28. 📝エラーログをAirtableに自動記録する
- 29. 🤖LLMを使ったカスタマーサポート自動応答ボット
- 30. 🔎ドキュメントRAG検索システムを構築する
- 31. 📬AIでメール内容を自動分類・ルーティングする
- 32. 🔧JavaScriptで複雑なデータ変換処理を実装する
- 33. 📄npmライブラリを使ったPDF自動生成フロー
- 34. ✔️カスタムバリデーションロジックをCodeノードで実装する
- 35. 🗂️Gitでワークフローをバージョン管理する
- 36. 🌍環境変数で本番・ステージングを切り替える
- 37. 👥チームでのワークフロー共同管理フロー
- 38. 📋AIで履歴書を自動スクリーニング・スコアリングする
- 39. 🧾請求書PDFをOCRで自動データ入力・会計ソフト登録する
- 40. 📱ブログ記事→SNS自動投稿パイプラインを構築する
- 41. 📦Shopify注文処理を完全自動化する(在庫・配送・顧客通知)
- 42. 🔔予約リマインダーを自動送信してノーショーを削減する
- 43. 📊経営ダッシュボードを毎朝Slackに自動配信する
- 44. 🔭競合情報を自動収集してWeeklyレポートにまとめる
- 45. 🎉新入社員オンボーディングを完全自動化する
出典: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/