Интеграции 21.02.2026 3,191 просмотров

PostgreSQL + n8n: работаем с базами данных прямо из workflow

#PostgreSQL #n8n #база данных #SQL #workflow #автоматизация
Статья на тему: PostgreSQL + n8n: работаем с базами данных прямо из workflow

Введение

Когда вы начинаете собирать автоматизации в n8n, первый инстинкт — использовать для хранения данных Google Sheets или Airtable. Это наглядно, просто и работает "из коробки". Но как только ваш процесс вырастает из "игрушечного" в боевой (тысячи записей в день, сложные связи между клиентами и заказами, требования к безопасности), эти инструменты начинают тормозить, выдавать ошибки API-лимитов и стоить неадекватных денег.

Решение для взрослого бизнеса — это переход на полноценные реляционные базы данных. И здесь абсолютным королем является PostgreSQL. В этой статье мы разберем, как перестать бояться SQL, почему связка n8n + PostgreSQL — это лучший фундамент для любого backend-приложения, и как правильно настроить эту интеграцию.

Почему именно PostgreSQL, а не Google Sheets?

Сравним два подхода на реальном примере: у вас есть Telegram-бот, который собирает заказы, и вы хотите проверять, есть ли пользователь в вашей "базе" перед тем, как выдать ему бонус.

  • Google Sheets: n8n берет ID пользователя, делает запрос к API Google. Google читает всю таблицу (скажем, 50 000 строк) и ищет совпадение. Это занимает 2-3 секунды. Если в эту секунду к боту обратятся 10 человек, Google может просто заблокировать запрос с ошибкой 429 Too Many Requests.
  • PostgreSQL: n8n отправляет SQL-запрос SELECT * FROM users WHERE telegram_id = '123'. За счет индексов база данных за миллисекунды (0.01 сек) отдает точный ответ. Вы можете обрабатывать сотни запросов в секунду абсолютно бесплатно.

Нода PostgreSQL в n8n: Режимы работы

n8n предлагает отличную официальную ноду для работы с Postgres. Она умеет работать в двух основных режимах, которые закрывают 99% потребностей без знания глубокого синтаксиса.

1. Базовые операции (CRUD без SQL)

Если вы не умеете писать SQL-запросы, n8n сделает это за вас через визуальный интерфейс. В выпадающем меню ноды (раздел Operation) вы можете выбрать:

  • Insert: Добавить новую строку. Вы просто выбираете таблицу из списка, и n8n сам подтягивает ее колонки. Вам остается только перетащить в них переменные (например, {{ $json.chat_id }} в колонку user_id).
  • Update: Обновить данные. Например, изменить статус заказа с "New" на "Paid". Указываем таблицу, колонку для обновления, и условие (Update Key), по которому база найдет нужную строку.
  • Upsert (Update or Insert): Самая популярная операция. n8n проверяет: если такой пользователь уже есть в базе — он обновляет его данные; если нет — создает нового. Это спасает от дублей при повторных срабатываниях вебхуков.
  • Select: Выборка данных. Можно задать лимит, сортировку и простейшие условия (WHERE) прямо в меню настроек.

2. Режим Execute Query (Для сложных SQL-запросов)

Если вам нужно сделать сложную аналитику (JOIN нескольких таблиц, агрегация GROUP BY, математические вычисления на стороне базы), вы выбираете режим Execute Query и пишете чистый SQL-код.

Пример: Найти топ-5 клиентов, которые потратили больше всего денег за последний месяц, и чьи заказы в статусе "Доставлено".

SELECT users.name, SUM(orders.total_amount) as total_spent
FROM users
JOIN orders ON users.id = orders.user_id
WHERE orders.status = 'delivered'
  AND orders.created_at >= CURRENT_DATE - INTERVAL '1 month'
GROUP BY users.name
ORDER BY total_spent DESC
LIMIT 5;

n8n выполнит этот запрос и вернет вам аккуратный JSON-массив с Топ-5 клиентами, который вы сможете тут же отправить в Telegram-чат руководителю отдела продаж.

Безопасность: Берегитесь SQL-инъекций!

Самая большая ошибка новичков при работе с режимом Execute Query — это прямая вклейка переменных в текст запроса. Никогда не делайте так:

SELECT * FROM users WHERE name = '{{ $json.user_input }}';

Если пользователь введет в бота фразу '; DROP TABLE users; --, база данных удалит всю вашу таблицу пользователей.

Правильный подход (Использование Query Parameters):
В n8n под полем с вашим SQL-кодом есть переключатель "Query Parameters". Активируйте его. В самом SQL-запросе используйте заглушку (placeholder) — $1.

SELECT * FROM users WHERE name = $1;

А в поле Query Parameters вставьте вашу переменную {{ $json.user_input }}. База данных (и драйвер Postgres под капотом n8n) сама безопасно заэкранирует этот текст, превратив любые кавычки в обычный текст, а не в команду.

Где взять PostgreSQL?

Если вы только учитесь, не обязательно сразу покупать дорогой сервер.

  1. Облачные сервисы (DBaaS): Платформы вроде Supabase, Neon.tech или Render дают щедрые бесплатные тарифы на полноценный PostgreSQL в облаке. Достаточно скопировать длинную строку подключения (Connection String) и вставить ее в Credentials n8n.
  2. Self-Hosted (Docker): Если у вас уже есть VPS, где крутится n8n, вы можете развернуть Postgres рядом в соседнем Docker-контейнере всего одной командой. Это бесплатно, данные не покидают ваш сервер, а скорость общения n8n и базы будет максимальной.

Заключение

Переход от табличек к реляционной базе данных — это Рубикон в карьере любого специалиста по автоматизации. Да, придется выучить основы создания таблиц, типы данных (VARCHAR, INT, BOOLEAN) и синтаксис SQL. Но взамен вы получите фундамент, который легко масштабируется от 10 заказов в день до инфраструктуры уровня маркетплейса, не требуя переписывания логики в n8n.

Полезные материалы по теме