You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何校验第一张表的文件名更换扩展名后是否存在于第二张表

实现逻辑
  • 核心是先统一两张表的文件名格式:将第一张表文件名末尾的.error后缀替换为.tm,再和第二张表的文件名列做存在性匹配即可
  • 注意不要直接做全局字符串替换,要只处理末尾的后缀,避免文件名本身包含.error字符时出现匹配错误
具体实现方案

方案1:数据库内直接用SQL查询(推荐,无需导出数据)

假设第一张表名为table_err,文件名列名为filename,存储值格式为xxx.error;第二张表名为table_tm,文件名列名为filename,存储值格式为xxx.tm。

通用兼容写法(所有支持标准SQL的数据库都可用)

通过截取固定长度后缀再拼接的方式实现格式转换,不会误替换文件名中间的字符:

SELECT
  a.filename AS error_filename,
  CONCAT(LEFT(a.filename, CHAR_LENGTH(a.filename) - 6), '.tm') AS expect_tm_filename,
  CASE WHEN b.filename IS NOT NULL THEN '存在' ELSE '不存在' END AS match_result
FROM table_err a
LEFT JOIN table_tm b
  ON CONCAT(LEFT(a.filename, CHAR_LENGTH(a.filename) - 6), '.tm') = b.filename;

说明:.error后缀固定长度为6个字符,因此截取文件名从开头到倒数第7位的部分,再拼接.tm即可得到准确的目标文件名。

各数据库简化写法

  • MySQL:可以直接用REPLACE配合EXISTS判断,写法更简洁
SELECT
  filename,
  EXISTS(SELECT 1 FROM table_tm b WHERE b.filename = REPLACE(a.filename, '.error', '.tm')) AS is_exist
FROM table_err a;
  • PostgreSQL:支持REGEXP_REPLACE精准匹配末尾后缀,更灵活
SELECT
  filename,
  EXISTS(
    SELECT 1 FROM table_tm b 
    WHERE b.filename = REGEXP_REPLACE(a.filename, '\.error$', '.tm')
  ) AS is_exist
FROM table_err a;

方案2:本地处理导出的表格文件(CSV/Excel)

如果数据表已经导出为本地文件,可以用Python的pandas库快速处理:

import pandas as pd

# 读取两张表,根据实际文件格式切换read_excel/read_csv即可
df_err = pd.read_excel("错误文件列表.xlsx")
df_tm = pd.read_excel("tm文件列表.xlsx")

# 仅替换末尾的.error后缀为.tm
df_err["tm_filename"] = df_err["filename"].str.removesuffix(".error") + ".tm"
# 判断转换后的文件名是否在第二张表的文件名列表中
df_err["match_status"] = df_err["tm_filename"].isin(df_tm["filename"])
# 保存匹配结果
df_err.to_excel("匹配结果.xlsx", index=False)

注意:removesuffix方法要求Python版本3.9及以上,低版本可以用正则替换df_err["filename"].str.replace(r'\.error$', '.tm', regex=True)实现相同效果。

内容的提问来源于stack exchange,提问作者aami123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 03:12:33