影刀RPA数据库操作实战:SQLite+MySQL企业级应用指南

发布时间:2026/6/26 16:52:30

影刀RPA数据库操作实战:SQLite+MySQL企业级应用指南 影刀RPA数据库操作实战SQLiteMySQL企业级应用指南作者林焱 | 影刀RPA教程系列第102篇导读前面很多文章都提到数据存到Excel。但当数据量达到万级以上或者需要多流程共享数据、多用户并发访问时Excel就不够用了——你需要数据库。这篇文章从零开始教你用影刀RPA操作数据库SQLite轻量级无需安装服务器单文件数据库MySQL企业级适合多用户、大数据量场景包含完整的CRUD增删改查、事务处理、批量入库、查询优化等实战内容。一、为什么需要数据库Excel vs 数据库对比维度ExcelSQLiteMySQL数据量上限约100万行理论无限制TB级PB级并发访问不支持文件锁有限支持强支持查询速度万行以下快百万行以内很快亿行级别优化空间大部署难度无需部署无需部署需要装MySQL服务多流程共享困难文件锁冲突可以连接池天然支持数据类型约束弱什么都能填有基本约束完整的约束系统适用场景选择数据量 1万条 → 用Excel就够了 数据量 1万~100万条 → 用SQLite推荐 数据量 100万条 或 多人同时用 → 用MySQL二、Part ASQLite操作推荐入门首选什么是SQLite一个文件就是一个数据库如data.db不需要安装任何服务影刀RPA内置支持SQLite适合个人使用、中小型项目Step 1创建/打开数据库【指令】打开/创建SQLite数据库 参数 - 文件路径C:\RPA_Data\my_database.db - 如果不存在则自动创建✅ 勾选 → 输出变量db_connection数据库连接对象 第一次运行时自动创建my.db文件。后续所有操作都用同一个连接对象。Step 2建表假设我们要建一个商品价格监控的数据表CREATETABLEIFNOTEXISTSproducts(idINTEGERPRIMARYKEYAUTOINCREMENT,-- 自增主键product_nameTEXTNOTNULL,-- 商品名称platformTEXTNOTNULL,-- 平台京东/淘宝/拼多多priceREALNOTNULL,-- 价格浮点数currencyTEXTDEFAULTCNY,-- 货币单位[video(video-YDeurRa6-1782426071778)(type-csdn)(url-https://live.csdn.net/v/embed/525010)(image-https://v-blog.csdnimg.cn/asset/f4faa587144cb7070f19e8b36813806b/cover/Cover0.jpg)(title-店群矩阵自动化突破运营极限)]urlTEXT,-- 商品链接collected_atDATETIMEDEFAULTCURRENT_TIMESTAMP,-- 采集时间UNIQUE(product_name,platform,collected_at)-- 同一商品同平台同一时间不重复);在影刀RPA中执行SQL拖入执行SQL语句指令连接对象db_connectionSQL语句粘贴上面的CREATE TABLE语句输出执行结果建表操作一般没有返回值Step 3插入数据Create方式1插入单条INSERTINTOproducts(product_name,platform,price,url)VALUES(iPhone 16 Pro,京东,8999.00,https://item.jd.com/123456.html);方式2批量插入高性能当你要一次插入1000条数据时不要用循环逐条INSERT太慢了用批量插入-- 影刀RPA支持把数据表直接批量写入数据库-- 指令批量插入数据表到数据库参数 连接对象db_connection 表名products数据表collected_data之前采集到的数据表 列映射商品名称列→ product_name平台列→ platform价格列→ price链接列→ url性能对比循环逐条INSERT 1000条 → 约60秒批量插入 1000条 → 约2秒⚡️ 快30倍Step 4查询数据Read基础查询-- 查询所有数据SELECT*FROMproducts;-- 查询最新10条SELECT*FROMproductsORDERBYcollected_atDESCLIMIT10;-- 按条件筛选SELECT*FROMproductsWHEREplatform京东ANDprice5000;聚合查询统计-- 各平台平均价格SELECTplatform,AVG(price)asavg_price,COUNT(*)ascountFROMproductsGROUPBYplatform;-- 价格最低的前5名商品SELECTproduct_name,platform,MIN(price)aslowest_priceFROMproductsGROUPBYproduct_nameORDERBYlowest_priceASCLIMIT5;-- 每天采集的商品数量趋势SELECTDATE(collected_at)asdate,COUNT(*)asdaily_countFROMproductsGROUPBYDATE(collected_at)ORDERBYdateDESCLIMIT30;在影刀RPA中执行查询并获取结果拖入执行查询SQL指令连接对象db_connectionSQL语句SELECT * FROM products WHERE price 5000输出query_result数据表可以直接用于后续操作Step 5更新数据Update-- 更新某个商品的价格采集到新价格后更新UPDATEproductsSETprice8500.00WHEREproduct_nameiPhone 16 ProANDplatform京东;-- 批量更新给所有价格加10%模拟涨价UPDATEproductsSETpriceprice*1.1;![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8053182d1d3f429fb49b31f5650c5120.png#pic_center)-- 条件更新标记已处理的状态UPDATEproductsSETstatusprocessedWHEREstatuspending;Step 6删除数据Delete⚠️注意删除前一定要备份或加WHERE条件否则会清空整张表-- 删除30天前的旧数据定期清理DELETEFROMproductsWHEREcollected_atdatetime(now,-30 days);-- 删除重复数据保留id最小的那一条DELETEFROMproductsWHEREidNOTIN(SELECTMIN(id)FROMproductsGROUPBYproduct_name,platform);-- 清空整张表慎用-- DELETE FROM products; ← 这会删掉所有数据Step 7事务处理保证数据一致性什么是事务事务就是一组操作要么全部成功要么全部失败不会出现只成功了一半的情况。场景举例你要同时往两张表里写数据一张是商品表一张是日志表。如果商品表写入成功了但日志表失败了数据就不一致了。事务的使用方法【开始事务】 拖入开启事务指令connection db_connection 【执行一系列SQL】 执行SQL: INSERT INTO products (...) VALUES (...) 执行SQL: INSERT INTO operation_log (action, time) VALUES (insert_product, ...) 执行SQL: UPDATE statistics SET total_count total_count 1 【判断是否全部成功】 如果 所有SQL都执行成功 【提交事务】 拖入提交事务指令connection db_connection 记录日志事务提交成功 否则 【回滚事务】 拖入回滚事务指令connection db_connection 记录日志事务回滚所有修改已撤销 【结束】三、Part BMySQL操作企业级场景准备工作确保MySQL已安装并运行公司IT部门一般都有拿到连接信息主机地址192.168.1.100或localhost本机端口3306用户名rpa_user密码your_password数据库名rpa_databaseStep 1连接MySQL拖入连接MySQL数据库指令主机192.168.1.100端口3306用户名rpa_user密码your_password数据库名rpa_database输出mysql_conn连接对象Step 2建表MySQL语法略有不同CREATETABLEIFNOTEXISTSorders(idINTPRIMARYKEYAUTO_INCREMENT,order_noVARCHAR(50)NOTNULLUNIQUE,-- 订单号唯一约束customer_nameVARCHAR(100)NOTNULL,-- 客户姓名product_nameVARCHAR(200),-- 产品名称amountDECIMAL(12,2)NOTNULL,-- 金额精确到分order_statusENUM(pending,paid,shipped,completed,cancelled)DEFAULTpending,create_timeDATETIMEDEFAULTCURRENT_TIMESTAMP,update_timeDATETIMEDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP,INDEXidx_customer(customer_name),-- 索引加速按客户名查询INDEXidx_status(order_status),-- 索引加速按状态查询INDEXidx_create_time(create_time)-- 索引加速按时间范围查询);Step 3批量导入Excel数据到MySQL这是最常用的场景之一把Excel里的订单数据批量导入MySQL。【读取Excel】 读取Excel C:\Orders\orders_202606.xlsx → excel_data数据表 【数据清洗】 对 excel_data 每行循环 如果 [当前行.金额] 为空 或 不是数字 [当前行.金额] 0 如果 [当前行.订单号] 为空 跳过此行跳过无效数据 循环结束 【批量写入MySQL】 拖入批量插入数据表到MySQL指令 连接对象 mysql_conn 表名 orders 数据表 excel_data 列映射 订单号列 → order_no 客户名列 → customer_name 产品名列 → product_name 金额列 → amount 冲突策略IGNORE如果订单号已存在则跳过不报错 记录日志成功导入 成功行数 条订单数据Step 4复杂查询与数据分析场景1月度销售报表-- 按月份统计销售额和订单数SELECTDATE_FORMAT(create_time,%Y-%m)asmonth,COUNT(*)asorder_count,SUM(amount)astotal_amount,AVG(amount)asavg_amount,MAX(amount)asmax_amountFROMordersWHEREcreate_time2026-01-01GROUPBYDATE_FORMAT(create_time,%Y-%m)ORDERBYmonthDESC;场景2TOP10客户排行-- 消费金额最高的前10个客户SELECTcustomer_name,COUNT(*)asorder_count,SUM(amount)astotal_spent,AVG(amount)asavg_order_amountFROMordersWHEREorder_status!cancelledGROUPBYcustomer_nameORDERBYtotal_spentDESCLIMIT10;场景3待处理订单统计temu店群自动化报活动案例-- 各种状态的订单数量SELECTorder_status,COUNT(*)ascount,SUM(amount)astotal_amountFROMordersGROUPBYorder_statusORDERBYcountDESC;Step 5定时同步任务Excel → MySQL很多公司的业务数据还在Excel里流转需要每天定时把最新的Excel数据同步到MySQL数据库供BI系统分析。【主流程设计】 1. 定义配置 excel_dir C:\Orders\ -- Excel文件存放目录 mysql_conn 连接MySQL -- 已建立的连接 sync_log_file C:\Logs\sync.log 2. 获取目录下所有Excel文件列表 3. 对每个Excel文件循环 a. 读取Excel → data_table b. 文件名解析出日期如 orders_20260610.xlsx → 2026-06-10 c. 在data_table中新增import_date列填入解析出的日期 d. 批量写入MySQL冲突策略UPSERT即存在就更新不存在就插入 e. 移动已处理的Excel文件到已完成文件夹 f. 记录同步日志 4. 关闭MySQL连接 5. 发送邮件通知今日同步了多少文件、多少条数据四、性能优化技巧场景优化方案效果提升大批量插入万级先关闭索引 → 批量插入 → 重建索引5~10倍查询慢给常用查询字段加INDEX10~100倍全文搜索慢用LIKE ‘%关键词%’ 很慢改用FTS全文索引数据库文件太大定期归档旧数据移到历史表保持活跃数据量小连接频繁建立销毁使用连接池复用连接减少开销批量插入优化示例【优化前逐条INSERT10000条 ≈ 600秒】 对 data_table 循环 执行SQL: INSERT INTO ... VALUES ... 循环结束 【优化后批量INSERT10000条 ≈ 10秒】 拖入批量插入数据表到数据库: 数据表 data_table一次性全部写入 批次大小 1000每批1000条分10批提交五、常见问题与解决方案Q1SQLite数据库文件被锁住了原因上一个流程没正确关闭连接或者另一个进程正在读写这个文件。解决结束所有正在运行的RPA流程如果还不行重启影刀RPA客户端终极方案删除.db-wal和.db-shm文件⚠️ 可能丢失未提交的数据Q2MySQL连接超时怎么办原因默认MySQL连接8小时空闲后会自动断开。解决每次操作前检查连接是否还活着执行一个简单的SELECT 1如果断开了重新连接或者在MySQL服务端设置wait_timeout 31536000一年不断开仅开发环境Q3中文乱码原因编码不一致Excel是GBK数据库是UTF-8。解决读取Excel时指定编码为UTF-8如果Excel本身就是UTF-8写入数据库前统一转UTF-8MySQL连接时指定字符集charsetutf8mb4六、总结速查卡操作SQLite指令MySQL指令创建/打开数据库打开SQLite数据库连接MySQL数据库建表CREATE TABLECREATE TABLE语法略不同单条插入INSERT INTOINSERT INTO批量插入批量插入数据表批量插入数据表到MySQL查询SELECT * FROMSELECT * FROM更新UPDATE … SETUPDATE … SET删除DELETE FROMDELETE FROM事务开启/提交/回滚事务同左关闭连接关闭SQLite连接关闭MySQL连接如果这篇文章对你有帮助欢迎分享给更多朋友下一篇我们将讲解影刀RPA调试进阶复杂BUG排查方法论与工具使用技巧。

相关新闻