Excel 批量 DELETE 免费 – 按主键安全清理

2026-07-02

什么时候需要批量 DELETE

测试数据清理、过期订单归档前删除、错误导入回滚——这些场景需要按主键或业务编号批量删除记录。手工写 DELETE 容易漏条件,一旦 WHERE 写错就可能误删全表。

ComTools Excel 转 SQL 支持从 Excel / CSV 生成 DELETE 脚本:每行数据对应一条 DELETE必须指定 WHERE 列(工具不允许无条件的全表删除)。

准备 Excel 文件

第一行为列名,以下为要删除的记录标识。

DELETE 示例表(按 OrderId 删除):

OrderId
ORD-2024-001
ORD-2024-002
ORD-2024-003

多列定位时(复合主键),在 Excel 中保留所有键列:

TenantId OrderId
1 ORD-001
1 ORD-002

使用步骤(DELETE)

  1. 打开 Excel 转 SQL
  2. 上传 .xlsx.xlsm.csv,选择目标 Sheet。
  3. 语句类型Delete
  4. 填写表名,如 dbo.Orders
  5. 选择数据库类型(SQL Server、MySQL、PostgreSQL、SQLite、Oracle)。
  6. 在列矩阵中只勾选 WHERE 列(如 OrderId);DELETE 不需要 SET 列。
  7. 点击 生成,复制或下载 SQL。

输出示例

DELETE FROM dbo.Orders WHERE OrderId = 'ORD-2024-001';
DELETE FROM dbo.Orders WHERE OrderId = 'ORD-2024-002';
DELETE FROM dbo.Orders WHERE OrderId = 'ORD-2024-003';

复合条件示例:

DELETE FROM dbo.Orders WHERE TenantId = 1 AND OrderId = 'ORD-001';

执行前安全清单(必读)

DELETE 不可逆,请务必按顺序操作:

步骤 操作
1 测试库先执行,确认影响行数
2 用相同条件写 SELECT 预览(工具支持 Select 类型,或手工 SELECT COUNT(*)
3 备份相关表或整库
4 生产环境分批执行,每批 500~1000 条
5 执行后核对剩余数据与业务预期
-- 删除前先数一下会删多少行
SELECT COUNT(*) FROM dbo.Orders
WHERE OrderId IN ('ORD-2024-001', 'ORD-2024-002', 'ORD-2024-003');

若 COUNT 与 Excel 行数不一致,说明部分 ID 在库中不存在或条件有误,不要继续执行

常见场景

场景 WHERE 列 注意
按订单号删 OrderId 字符串 ID 注意引号与大小写
按用户 ID 删 UserId 数字列不要加多余引号
复合主键 多列勾选 WHERE 生成 AND 连接
先查再删 先用 Select 生成 IN 查询 见下方技巧

用 Select 生成 IN 列表预览

若 Excel 只有一列 ID,可先将语句类型改为 Select,勾选该列为 WHERE,生成 WHERE Id IN (...) 查询,在库里执行确认后再改回 Delete 生成删除脚本。

与 INSERT、UPDATE 的配合

操作 适用场景 指南
INSERT 新增数据 INSERT 指南
UPDATE 修改已有字段 UPDATE 指南
DELETE 按键删除行 本篇

典型工作流:错误批次 INSERT 进库 → 用本篇 DELETE 按导入批次号清理 → 修正 Excel 后重新 INSERT

导入前建议:去重 避免重复主键导致 INSERT 失败。

临时表与软删除

  • 临时表 #Preview:表名以 # 开头时,工具可附带建表与预览,适合先核对 ID 列表再对正式表执行 DELETE。
  • 软删除:若业务用 IsDeleted = 1 而非物理删除,请用 UPDATE 指南 批量更新标志位,而不是 DELETE。

本系列(Excel 转 SQL)

常见问题

Q:能否生成不带 WHERE 的 DELETE?
A:不能。工具强制至少一列 WHERE,防止误删全表。

Q:字符串 ID 含单引号怎么办?
A:工具会自动转义为 '',与 INSERT/UPDATE 一致。

Q:删除 5 万行可以吗?
A:单次生成上限 50,000 行;超大批量请拆分文件或分批执行脚本。

Q:CSV 只有一列 ID 怎么删?
A:直接上传 CSV,第一行写列名(如 OrderId),勾选 WHERE 即可。编码问题见 CSV 导入指南


English version