Database Nodes¶
Database nodes allow workflows to interact with relational databases.
PostgreSQL Node¶
Execute queries against PostgreSQL databases.
Type¶
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
connectionUrl |
string | No* | PostgreSQL connection URL |
host |
string | No* | Database host |
port |
number | No | Port (default: 5432) |
database |
string | No* | Database name |
user |
string | No* | Username |
password |
string | No* | Password |
operation |
string | Yes | executeQuery, insert, update, delete |
query |
string | Depends | SQL query (for executeQuery) |
*Either connectionUrl OR individual connection parameters required.
Connection Examples¶
Using Connection URL¶
{
"type": "n8n-nodes-base.postgres",
"parameters": {
"connectionUrl": "postgres://user:password@localhost:5432/mydb",
"operation": "executeQuery",
"query": "SELECT * FROM users"
}
}
Using Individual Parameters¶
{
"type": "n8n-nodes-base.postgres",
"parameters": {
"host": "localhost",
"port": 5432,
"database": "mydb",
"user": "dbuser",
"password": "={{ $credentials.postgres.password }}",
"operation": "executeQuery",
"query": "SELECT * FROM users WHERE status = 'active'"
}
}
Operations¶
Execute Query¶
{
"type": "n8n-nodes-base.postgres",
"parameters": {
"connectionUrl": "postgres://...",
"operation": "executeQuery",
"query": "SELECT id, name, email FROM users WHERE created_at > '2024-01-01'"
}
}
Output:
[
{"json": {"id": 1, "name": "John", "email": "[email protected]"}},
{"json": {"id": 2, "name": "Jane", "email": "[email protected]"}}
]
Insert¶
{
"type": "n8n-nodes-base.postgres",
"parameters": {
"connectionUrl": "postgres://...",
"operation": "insert",
"table": "users",
"columns": ["name", "email"],
"values": ["={{ $json.name }}", "={{ $json.email }}"]
}
}
Update¶
{
"type": "n8n-nodes-base.postgres",
"parameters": {
"connectionUrl": "postgres://...",
"operation": "update",
"table": "users",
"updateKey": "id",
"updateValue": "={{ $json.id }}",
"columns": ["status"],
"values": ["inactive"]
}
}
Delete¶
{
"type": "n8n-nodes-base.postgres",
"parameters": {
"connectionUrl": "postgres://...",
"operation": "delete",
"table": "users",
"deleteKey": "id",
"deleteValue": "={{ $json.id }}"
}
}
MySQL Node¶
Execute queries against MySQL databases.
Type¶
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
connectionUrl |
string | No* | MySQL connection URL |
host |
string | No* | Database host |
port |
number | No | Port (default: 3306) |
database |
string | No* | Database name |
user |
string | No* | Username |
password |
string | No* | Password |
operation |
string | Yes | executeQuery, insert, update, delete |
query |
string | Depends | SQL query |
Examples¶
Select Query¶
{
"type": "n8n-nodes-base.mysql",
"parameters": {
"host": "localhost",
"port": 3306,
"database": "myapp",
"user": "root",
"password": "={{ $credentials.mysql.password }}",
"operation": "executeQuery",
"query": "SELECT * FROM orders WHERE status = 'pending'"
}
}
Insert with Expression¶
{
"type": "n8n-nodes-base.mysql",
"parameters": {
"connectionUrl": "mysql://user:pass@localhost:3306/myapp",
"operation": "executeQuery",
"query": "INSERT INTO logs (message, timestamp) VALUES ('{{ $json.message }}', NOW())"
}
}
SQLite Node¶
Execute queries against SQLite databases.
Type¶
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
filename |
string | Yes | Path to SQLite database file |
operation |
string | Yes | executeQuery, insert, update, delete |
query |
string | Depends | SQL query |
Examples¶
Query SQLite File¶
{
"type": "n8n-nodes-base.sqlite",
"parameters": {
"filename": "/data/myapp.db",
"operation": "executeQuery",
"query": "SELECT * FROM settings"
}
}
Insert Record¶
{
"type": "n8n-nodes-base.sqlite",
"parameters": {
"filename": "./local.db",
"operation": "executeQuery",
"query": "INSERT INTO events (name, data) VALUES ('{{ $json.event }}', '{{ JSON.stringify($json.data) }}')"
}
}
Common Patterns¶
Parameterized Queries¶
Prevent SQL injection with expressions:
Batch Insert¶
Loop through items:
{
"type": "n8n-nodes-base.postgres",
"parameters": {
"operation": "executeQuery",
"query": "INSERT INTO items (name, value) VALUES ('{{ $json.name }}', {{ $json.value }})"
}
}
Check Query Results¶
Use Filter node after database query:
{
"type": "n8n-nodes-base.filter",
"parameters": {
"conditions": [
{
"leftValue": "={{ $json.length }}",
"operator": "greaterThan",
"rightValue": 0
}
]
}
}
Quick Reference¶
| Node | Type | Default Port |
|---|---|---|
| PostgreSQL | n8n-nodes-base.postgres |
5432 |
| MySQL | n8n-nodes-base.mysql |
3306 |
| SQLite | n8n-nodes-base.sqlite |
N/A (file) |