PostgreSQL 数据库每日备份至 GitHub (CSV 格式) - n8n 工作流

使用这款强大的 n8n 工作流实现 PostgreSQL 数据库的每日自动备份。将表数据转换为 CSV 格式并上传或更新到 GitHub 仓库,确保数据完整性和版本控制。

工作流预览

准备好自动化了吗?

下载此 n8n 工作流模板并立即开始使用。

适用人群


  • 需要数据库自动归档的 DevOps 工程师。

  • 需要生产数据每日版本化备份的开发者。

  • 希望在 n8n 工作流中看到条件逻辑高级用法的用户。

  • 使用 n8n 模板寻找可靠自动化数据导出方案的数据管理员。

概览

维护可靠的数据库备份对任何应用都至关重要。这个专用的 n8n 工作流提供了一套完整的解决方案,利用 GitHub 进行存储和版本控制,实现 PostgreSQL 数据的自动化提取、转换和归档。通过使用周期性的 n8n 触发器,系统确保每 24 小时查询指定数据库表的数据,将其转换为通用的 CSV 格式,并有条件地提交到代码仓库。这个完全在 n8n 工作流内部构建的精妙流程,会判断表是新增的(需要上传)还是已存在的(需要更新),从而保证了效率并避免了不必要的文件重复。这个强大的 n8n 节点配置是您运维监控工具箱中的绝佳补充。

工作原理

此自动化由 每日调度 (Daily Schedule) n8n 触发器启动,设置为每 24 小时运行一次。


  1. 准备工作(检查 GitHub): n8n 工作流首先使用 GitHub n8n 节点列出目标仓库中已存在的所有文件。这些文件名被汇总成一个列表,以便快速查找。

  2. 列出表(Postgres): PostgreSQL n8n 节点同时连接到数据库,从 public 模式的 information_schema.tables 中检索所有表名的列表。

  3. 数据提取循环: 工作流进入主批处理循环(Loop Over Items),逐个处理每个表名。对于每个表,执行一个 PostgreSQL n8n 节点,运行 SELECT 查询以获取所有数据。

  4. 转换: 上一步获取的表的 JSON 数据被传递给 转换为文件 (Convert to File) n8n 节点,该节点将数据转换为二进制 CSV 文件。生成的文件名与源表名动态对应(例如 users.csv)。

  5. 条件上传/更新: 后续的 拆分为单项 (Split to single items) n8n 节点准备 CSV 文件以执行最终操作。一个 IF n8n 节点(检查仓库中文件是否存在)将 CSV 文件名与步骤 1 中汇总的 GitHub 文件名列表进行比较。

  6. 执行操作:

如果为 True(文件存在): 工作流执行 更新文件 [GITHUB] (Update file [GITHUB]) n8n 节点,将新的 CSV 二进制数据提交到现有文件路径。
* 如果为 False(新表): 工作流执行 上传文件 [GITHUB] (Upload file [GITHUB]) n8n 节点,在仓库中创建新文件。

安装指南

要部署这个强大的 n8n 工作流模板,请遵循以下步骤:


  1. 导入: 复制提供的 JSON 代码,并通过 n8n 实例中的 'Workflows' > 'New' > '从 JSON 导入 (Import from JSON)' 选项直接导入。

  2. PostgreSQL 凭证: 找到 PostgreSQL n8n 节点(List tablesList tables1)。您必须配置连接到数据库所需的凭证。确保这些凭证允许访问 information_schema.tables 以进行列表查询,并对您打算备份的表具有 SELECT 权限。

  3. GitHub 凭证: 为 GitHub n8n 节点实例配置 OAuth2 凭证。该账户必须对目标仓库(模板中为 github-repo)具有读/写权限,以便列出、更新和上传文件。

  4. 配置: 更新 GitHub n8n 节点参数,以反映您具体的 GitHub '所有者 (Owner)' 和 '仓库 (Repository)' 名称。

  5. 激活: 保存工作流,并将开关从 'Inactive'(非活动)切换到 'Active'(活动)。每日调度 (Daily Schedule) n8n 触发器现在将每 24 小时执行一次备份。

节点详情

每日调度 (Daily Schedule) (n8n 触发器): 启动 n8n 节点,负责每 24 小时运行一次整个备份自动化流程。
从仓库列出文件 [GITHUB] (List files from repository [GITHUB]) (GitHub n8n 节点): 列出目标 GitHub 仓库的当前内容,以确定哪些表已有备份。
合并文件名 [GITHUB] (Combine file names [GITHUB]) (Item Lists n8n 节点): 汇总来自 GitHub 的现有文件名称,简化后续 IF 节点执行的检查过程。
List tables1 (PostgreSQL n8n 节点): 查询数据库的系统模式(information_schema),以检索所有需要备份的表列表。
List tables (PostgreSQL n8n 节点): 在循环内执行,根据上一个 n8n 节点传入的特定表名,动态查询该表中的所有数据(operation: select, returnAll: true)。
转换为文件1 (Convert to File1) (Convert To File n8n 节点): 将原始 PostgreSQL 数据(JSON 格式)转换为二进制 CSV 文件,确保与版本控制系统的兼容性。文件名参数是使用表名动态设置的。
检查仓库中文件是否存在 (Check if file exists in repository) (IF n8n 节点): 核心控制流 n8n 节点,它利用汇总的文件列表来决定当前 CSV 文件应该是被更新(True)还是作为新文件上传(False)。
更新文件 [GITHUB] / 上传文件 [GITHUB] (Update file [GITHUB] / Upload file [GITHUB]) (GitHub n8n 节点): 这些节点负责将 CSV 二进制数据最终提交到仓库,确保每日备份被存储和版本化。

相关 n8n 工作流

免费

节点: 9 节点
更新时间: 2025年12月26日
创建者

AI and Automation developer. Im implementing n8n and ai tools to automate marketing and sales in companies

精选*