『n8n』不用写SQL,了解一下内置的Datatable

点赞 + 关注 + 收藏 = 学会了

整理了一个n8n小专栏,有兴趣的工友可以关注一下 👉 《n8n修炼手册》

非技术出身的工友在使用 n8n 时是否会遇到这样的困惑:爬取了一堆数据不知道存哪里,总不能每次都导出到Excel再来回导入?想让多个工作流共用一套数据,却找不到简单的方法?不想折腾MySQL、PostgreSQL这些复杂的外部数据库,也看不懂晦涩的SQL语句?

如果有以上困惑,而且你的数据结构不是那么复杂的话,可以试试 n8n 内置的 Data tables。

我用一个简单的例子介绍一下 Data tables 的用法,顺便讲讲不同格式的字段该如何转换。

picture.image

我们可以在 Data tables 面板管理各个数据表,点击右上角的“Create data table”创建一个数据表。

我以“员工信息表”作为演示。

picture.image

点击加号新增 namemarried

name 是“员工姓名”,Type 选择 string。

married 是“是否结婚”,Type 选择 boolean(这个类型只有“是”和“否”两个选项)。

picture.image

创建一个工作流,添加要给表单节点。

只有2个字段,表单的“姓名”对应数据表里的 name;表单的“是否结婚”对应数据表里的 married

但是,数据表的 married 的类型是布尔型,也就是 true 表示已结婚,false 表示未结婚。但表单的“是否结婚”的选项却是字符串的“已结”和“未结”。这里要做一下转换。

picture.image

在表单节点后面添加一个「Insert row」节点,搜 table 就能找到它。

picture.image

给「Insert row」节点做以下配置。

「From list」选择刚刚创建的“员工信息”表。

「Values to insert」填入 namemarried 这两个字段。

name 这项填入 {{ $json['姓名'] }} 比较好理解,我不讲解了。

married 这项填入 {{ $json['是否结婚'] === '已结' ? true : false }},这是 JS 的三元运算符,判断上一个节点传入的“是否结婚”这项的值是否为“已结”,如果是的话就存入 true ,否则存入 false

picture.image

测试一下整个工作流。

我提交了2次表单:

  • 雷猴,已结
  • 鲨鱼辣椒,未结

picture.image

来到数据表就能看到这两项了。

picture.image

鲨鱼辣椒突然说他今天要结婚了,作为 HR 也应该更新一下数据。

此时再提交一次表单:鲨鱼辣椒,已结。你会发现工作流又多了一条数据,这并不是我们想要的结果。

picture.image

在 Data tables 里先手动删除第3项。

回到工作流这边,新增了一些节点。

  • 上面那条:
    • 「If row exists」:如果传入的“姓名”已在数据表里,就走这条。
    • 「Update row(s)」:更新表中的数据。
  • 下面那条:
    • 「If row does not exist」:如果传入的“姓名”不在数据表里,就走这条。
    • 「Insert row」:新增一条数据。

picture.image

「If row exists」和「If row does not exist」的判断条件都是一样的,如下图所示。只不过这两个节点的功能不同而已。

picture.image

在来看「Update row(s)」这个节点,通过 name 这个字段找到要修改的那行数据,找到后就修改 married 这列的值。

picture.image

「Insert row」节点的配置不需要改变。

试试~

提交一项:鲨鱼辣椒,已婚

picture.image

回到数据表这边就能看到鲨鱼辣椒的婚姻状态变成“true”了。

picture.image

再提交一项:蝎子莱莱,未婚。

picture.image

由于“蝎子莱莱”不在数据表里,所以走的是“新增”路线。

picture.image


以上就是本文的全部内容啦,想了解更多n8n玩法欢迎关注《n8n修炼手册》👏

如果你有 NAS,我非常建议你在 NAS 上部署一套 n8n,搞搞副业也好,帮你完成工作任务也好 《『NAS』不止娱乐,NAS也是生产力,在绿联部署AI工作流工具-n8n》

点赞 + 关注 + 收藏 = 学会了

0
0
0
0
评论
未登录
暂无评论