在日常使用电脑时,很多人习惯让系统自动隐藏已知的文件扩展名。比如看到一个名为“客户名单”的文件,以为是Excel表格,双击打开却发现是数据库文件,甚至是一段脚本。这种混乱背后,往往就是文件扩展名被隐藏造成的。
为什么默认隐藏扩展名?
Windows 系统默认设置会隐藏常见的文件类型扩展名,比如 .txt、.xlsx、.db、.sql 等。系统本意是让界面更简洁,避免普通用户困惑。但对需要频繁处理数据文件的人来说,这反而成了隐患。
举个例子:你从同事那里收到一个叫“订单数据”的文件,看起来像 Excel 表格,点开却提示“无法识别格式”。其实它真实名字是“订单数据.xlsx.bat”——前半部分伪装成表格,后半部分是可执行脚本。一旦执行,可能就会运行恶意代码。而如果你开启了扩展名显示,一眼就能看出这是个伪装的程序文件。
数据库场景中的风险
在做数据库导入时,常需要指定文件路径和类型。比如用 SQLite 加载一个 .csv 文件,或者通过 MySQL 的 LOAD DATA 命令读取文本数据。如果文件实际是 .csv.txt(内容为 CSV 格式但后缀错误),而你又没发现,那导入过程就会失败。
再比如导出一份 PostgreSQL 的备份文件,命名为“backup.sql”,结果系统隐藏了真正的扩展名,实际保存成了 backup.sql.txt。下次想用 psql 导入时,命令执行报错,排查半天才发现文件类型不对。
如何显示文件扩展名
在 Windows 文件资源管理器中,点击顶部“查看”选项卡,在“显示/隐藏”区域勾选“文件扩展名”,即可开启显示。也可以进入“查看”→“选项”→“文件夹选项”→“查看”标签页,取消勾选“隐藏已知文件类型的扩展名”。
macOS 用户可以在“访达”中打开任意窗口,选择“显示”→“显示路径栏”,然后右键点击文件名,选择“显示简介”,在“名称与扩展名”部分手动编辑。虽然不能全局开启,但至少能逐个确认。
自动化脚本中的注意事项
写批处理或 Python 脚本来处理数据库文件时,常通过后缀判断文件类型。例如:
import os
for file in os.listdir('./data'):
if file.endswith('.sql'):
print(f"正在导入 {file}...")
# 执行导入逻辑
但如果原始文件其实是 data.sql.txt,而用户误以为它是 .sql 文件,脚本就不会识别它。这类问题在团队协作中尤其常见,因为每个人系统的显示设置不同。
小技巧:快速识别真实类型
即使不改系统设置,也有办法快速判断文件真实类型。比如用命令行输入 dir(Windows)或 ls -a(macOS/Linux),都能看到完整文件名包括扩展名。另外,用文本编辑器打开可疑文件,如果内容是 SQL 语句,哪怕它叫 report.docx,也能立刻判断出本质。
有些数据库工具如 DBeaver、Navicat 在导入时会提示“不支持的格式”,这时候别急着重试,先去文件系统里看看扩展名是不是真的对。