Workflow: Splitout Postgres Sync

Workflow Details

Download Workflow
{
    "id": "wDD4XugmHIvx3KMT",
    "meta": {
        "instanceId": "149cdf730f0c143663259ddc6124c9c26e824d8d2d059973b871074cf4bda531"
    },
    "name": "Synchronize your Google Sheets with Postgres",
    "tags": [],
    "nodes": [
        {
            "id": "44171bad-84b6-49f8-b538-fb0c2d52db43",
            "name": "Schedule Trigger",
            "type": "n8n-nodes-base.scheduleTrigger",
            "position": [
                900,
                360
            ],
            "parameters": {
                "rule": {
                    "interval": [
                        {
                            "field": "hours"
                        }
                    ]
                }
            },
            "typeVersion": 1.100000000000000088817841970012523233890533447265625
        },
        {
            "id": "1d1558cc-523b-4985-81e2-da49e3d0f4b7",
            "name": "Compare Datasets",
            "type": "n8n-nodes-base.compareDatasets",
            "position": [
                1820,
                380
            ],
            "parameters": {
                "options": [],
                "resolve": "preferInput1",
                "mergeByFields": {
                    "values": [
                        {
                            "field1": "first_name",
                            "field2": "first_name"
                        }
                    ]
                }
            },
            "typeVersion": 2.29999999999999982236431605997495353221893310546875
        },
        {
            "id": "b4442fd7-6817-40bb-a76e-851659c836ec",
            "name": "Split Out Relevant Fields",
            "type": "n8n-nodes-base.splitOut",
            "position": [
                1460,
                240
            ],
            "parameters": {
                "options": [],
                "fieldToSplitOut": "first_name, last_name, town, age"
            },
            "typeVersion": 1
        },
        {
            "id": "b63899bd-f842-4ead-a590-9bdacdc9b3c0",
            "name": "Retrieve Sheets Data",
            "type": "n8n-nodes-base.googleSheets",
            "position": [
                1200,
                240
            ],
            "parameters": {
                "options": [],
                "sheetName": {
                    "__rl": true,
                    "mode": "list",
                    "value": "gid=0",
                    "cachedResultUrl": "https:\/\/docs.google.com\/spreadsheets\/d\/1jhUobbdaEuX093J745TsPFMPFbzAIIgx6HnIzdqYqhg\/edit#gid=0",
                    "cachedResultName": "Sheet1"
                },
                "documentId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "1jhUobbdaEuX093J745TsPFMPFbzAIIgx6HnIzdqYqhg",
                    "cachedResultUrl": "https:\/\/docs.google.com\/spreadsheets\/d\/1jhUobbdaEuX093J745TsPFMPFbzAIIgx6HnIzdqYqhg\/edit?usp=drivesdk",
                    "cachedResultName": "Testing_Sheet"
                }
            },
            "typeVersion": 4.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "ae4918fb-07ef-48db-ba25-ea34c5af43af",
            "name": "Select Rows in Postgres",
            "type": "n8n-nodes-base.postgres",
            "position": [
                1200,
                540
            ],
            "parameters": {
                "table": {
                    "__rl": true,
                    "mode": "list",
                    "value": "testing",
                    "cachedResultName": "testing"
                },
                "schema": {
                    "__rl": true,
                    "mode": "list",
                    "value": "public"
                },
                "options": [],
                "operation": "select",
                "returnAll": true
            },
            "typeVersion": 2.29999999999999982236431605997495353221893310546875
        },
        {
            "id": "4d08d771-0e80-445e-92db-08197418512d",
            "name": "Insert Rows",
            "type": "n8n-nodes-base.postgres",
            "position": [
                2300,
                260
            ],
            "parameters": {
                "table": {
                    "__rl": true,
                    "mode": "list",
                    "value": "testing",
                    "cachedResultName": "testing"
                },
                "schema": {
                    "__rl": true,
                    "mode": "list",
                    "value": "public"
                },
                "columns": {
                    "value": [],
                    "schema": [
                        {
                            "id": "first_name",
                            "type": "string",
                            "display": true,
                            "required": false,
                            "displayName": "first_name",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        },
                        {
                            "id": "last_name",
                            "type": "string",
                            "display": true,
                            "required": false,
                            "displayName": "last_name",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        },
                        {
                            "id": "town",
                            "type": "string",
                            "display": true,
                            "required": false,
                            "displayName": "town",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        },
                        {
                            "id": "age",
                            "type": "number",
                            "display": true,
                            "required": false,
                            "displayName": "age",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        }
                    ],
                    "mappingMode": "autoMapInputData",
                    "matchingColumns": []
                },
                "options": []
            },
            "typeVersion": 2.29999999999999982236431605997495353221893310546875
        },
        {
            "id": "3fd7baa1-72c7-4587-a557-02eb4dfa92f5",
            "name": "Update Rows",
            "type": "n8n-nodes-base.postgres",
            "position": [
                2300,
                460
            ],
            "parameters": {
                "table": {
                    "__rl": true,
                    "mode": "list",
                    "value": "testing",
                    "cachedResultName": "testing"
                },
                "schema": {
                    "__rl": true,
                    "mode": "list",
                    "value": "public"
                },
                "columns": {
                    "value": {
                        "age": "={{ $json.age }}",
                        "town": "={{ $json.town }}",
                        "last_name": "={{ $json.last_name }}",
                        "first_name": "={{ $json.first_name }}"
                    },
                    "schema": [
                        {
                            "id": "first_name",
                            "type": "string",
                            "display": true,
                            "removed": false,
                            "required": false,
                            "displayName": "first_name",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        },
                        {
                            "id": "last_name",
                            "type": "string",
                            "display": true,
                            "removed": false,
                            "required": false,
                            "displayName": "last_name",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        },
                        {
                            "id": "town",
                            "type": "string",
                            "display": true,
                            "required": false,
                            "displayName": "town",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        },
                        {
                            "id": "age",
                            "type": "number",
                            "display": true,
                            "required": false,
                            "displayName": "age",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        }
                    ],
                    "mappingMode": "defineBelow",
                    "matchingColumns": [
                        "first_name",
                        "last_name"
                    ]
                },
                "options": [],
                "operation": "update"
            },
            "typeVersion": 2.29999999999999982236431605997495353221893310546875
        },
        {
            "id": "fc8dbe79-a54d-46fb-8ef7-4bb8b2a402ee",
            "name": "Sticky Note",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                360,
                260
            ],
            "parameters": {
                "width": 485.59945965224460451281629502773284912109375,
                "height": 350.0857600954085455668973736464977264404296875,
                "content": "## Setup ##\nIn order to make this automation work for you, you need to make a few adjustments:\n\n1. Add your Postgres & Google Sheets Credentials to the respective Nodes\n\n2. Select the Sheet (Google Sheets) and the table (Postgres) you want to sync\n\n3. Update the Insert & Update Queries so that the data is updated in the table you also selected the rows from in the first step"
            },
            "typeVersion": 1
        },
        {
            "id": "3719112b-1ec7-4402-a366-b1b845819e8d",
            "name": "Sticky Note1",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                2080,
                160
            ],
            "parameters": {
                "width": 485.59945965224460451281629502773284912109375,
                "height": 486.693620858173972010263241827487945556640625,
                "content": "## Updating Your Database \nUsing Insert Rows & Update Rows as Separate Postgres Node's"
            },
            "typeVersion": 1
        },
        {
            "id": "7742972b-7996-4f9a-9c1d-700737b94eec",
            "name": "Sticky Note2",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                1080,
                140
            ],
            "parameters": {
                "width": 543.395093051876074241590686142444610595703125,
                "height": 553.246168409264328147401101887226104736328125,
                "content": "## Retrieving Data & Spitting Out Fields \nGet the Data you want to compare and split out the relevant fields"
            },
            "typeVersion": 1
        }
    ],
    "active": false,
    "pinData": [],
    "settings": {
        "executionOrder": "v1"
    },
    "versionId": "ac0f0ed3-3f25-4672-a34a-29b5f4402e63",
    "connections": {
        "Compare Datasets": {
            "main": [
                [
                    {
                        "node": "Insert Rows",
                        "type": "main",
                        "index": 0
                    }
                ],
                [],
                [
                    {
                        "node": "Update Rows",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Schedule Trigger": {
            "main": [
                [
                    {
                        "node": "Retrieve Sheets Data",
                        "type": "main",
                        "index": 0
                    },
                    {
                        "node": "Select Rows in Postgres",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Retrieve Sheets Data": {
            "main": [
                [
                    {
                        "node": "Split Out Relevant Fields",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Select Rows in Postgres": {
            "main": [
                [
                    {
                        "node": "Compare Datasets",
                        "type": "main",
                        "index": 1
                    }
                ]
            ]
        },
        "Split Out Relevant Fields": {
            "main": [
                [
                    {
                        "node": "Compare Datasets",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
Back to Workflows

Related Workflows

Error Slack Send Triggered
View
Google Page Entity Extraction Template
View
Wait Splitout Process Webhook
View
Microsoftoutlook Schedule Automation Scheduled
View
Daily Text Affirmations
View
Form GoogleSheets Create Triggered
View
Extract personal data with a self-hosted LLM Mistral NeMo
View
[3/3] Anomaly detection tool (crops dataset)
View
Complete Guide to Setting Up and Generating TOTP Codes in n8n 🔐
View
Telegram Splitout Automation Webhook
View