【全网首发】解决coze工作流批量上传excel数据文档数据重复的问题

注意:目前方法将基于前一章批量数据库导入的修改!!!!请先阅读上篇文章的操作。抄袭注明来源

背景

上一节说的方法可以批量导入文件到数据库,但是无法解决已经上传的条目更新问题。简单来说,不会覆盖原始数据,只会在数据库后面增加新的条目,并没有达到更新数据的目的,只能说上一篇文章解决了运营阶段智能体能够和数据后台的连接,是一把钥匙。那么本文解决的就是更新的问题【在原始条目上】

思想来源

你需要注意的是,经过我不断测试下来,字节的这个SQL自定义采用的是Oracle的方式,普通的REPLACE等操作指令不认,会报SQL语句语法错误的问题。其次,如果你采用MERGE等操作手段,你会发现SQL语句过于繁琐,对大批量数据写入数据库不友好,插件难以制作。因此,本人不得已采用了一种方式,那就是先删除原始节点再上传,同时,我更新了插件代码,同步生成对应的DEL语句指令

插件2.0代码

python 复制代码
from runtime import Args
#注意下面的 read_excels根据自己设置的插件名称会有调整。
from typings.test.test import Input, Output
import requests
import io
import pandas as pd
import re
def remove_apostrophe(input_str: str) -> str:
    """移除字符串中的英文单引号"""
    return input_str.replace("'", "'")

def handler(args: Args[Input])->Output:
    # 文档地址 url
    url = args.input.file_link
    # 数据库表明
    database_table = args.input.database_table
    # 数据库表字段名(注意:文档的表头名字必须与数据库表字段名相同)
    database_table_list = args.input.database_table_list
    response = requests.get(url)
    values_list = []
    del_list = []
    s = ""
    m = ""
    if response.status_code == 200:
        df = pd.read_excel(io.BytesIO(response.content))
        for index, row in df.iloc[0:].iterrows():
            for i in database_table_list:
                res = row[i]
                if i == "product_name":
                    res = remove_apostrophe(row[i])
                if i == "erp_code":
                    del_list.append(str(res))  # 直接添加完整的ERP代码
                s = f"{s}'{res}',"
            values_list.append(f"({s[:-1]})")
            s = ""
        for i in database_table_list:
            m = f"{m}{i},"
        del_content = f"DELETE FROM {database_table} WHERE erp_code IN ({', '.join(f"'{x}'" for x in del_list)});"
        content = f"INSERT INTO {database_table} ({m[:-1]}) VALUES {', '.join(values_list)};"
    else:
        content = f"无法从网址获取文件,状态码:{response.status_code}"
        del_content = f"无法从网址获取文件,状态码:{response.status_code}"
    return {"insert_output1":content, "del_output2":del_content}

工作流2.0修改部分展示(完整请私信我)

效果展示

都维持在20条,没有机械式的简单增加

相关推荐
程序员清风2 小时前
Java 后端高并发设计:线程池、限流、熔断与降级
java·数据库·oracle
天衍四九-2 小时前
MySQL中如何定位慢查询?如果SQL语句执行很慢,如何分析和优化?
数据库·sql·mysql
尚久龙3 小时前
mysql-5.7.26-winx64的安装步骤
数据库·mysql
医疗信息化王工3 小时前
DataForge:基于 Python 的数据库批量导出 Excel 工具——从架构到部署的全流程实战
数据库·python·excel
实心儿儿3 小时前
MySQL 的安装
数据库·mysql·adb
程序员阿鹏5 小时前
为什么MySQL InnoDB选择B+树?
数据结构·数据库·b树·sql·mysql·算法·缓存
瀚高PG实验室6 小时前
使用pg_stat_statements抓取数据库TOP SQL
数据库·sql·postgresql·瀚高数据库
yanwumuxi7 小时前
【数据库系列】opensearch数据备份和恢复
数据库
anxiao_m7 小时前
2026企业AI数字孪生选型攻略,不同场景对应不同解决方案
大数据·网络·数据库
SelectDB7 小时前
从 ClickHouse 迁移到 Doris:SQL 兼容、同步与验证清单(实战笔记)
大数据·数据库·数据分析