如何在phpMyAdmin中批量修改数据库里的文件扩展名
批量更新数据库中PNG文件名到WebP的方法
方法1:用SQL字符串替换直接批量更新
这是最高效的方式,直接通过REPLACE函数一次性替换所有符合条件的文件名:
先执行查询确认替换结果(避免误操作):
SELECT `image_name`, REPLACE(`image_name`, '.png', '.webp') AS new_image_name FROM `gallery` WHERE `image_name` LIKE '%.png';
确认所有替换逻辑正确后,执行更新语句:
UPDATE `gallery` SET `image_name` = REPLACE(`image_name`, '.png', '.webp') WHERE `image_name` LIKE '%.png';
WHERE条件会确保只处理PNG格式的文件,不会影响其他格式的记录。
方法2:生成批量UPDATE语句(适合需要逐行确认的场景)
如果需要先预览所有待执行的更新语句,再手动执行,可以用以下SQL生成批量更新脚本:
SELECT CONCAT( 'UPDATE `gallery` SET `image_name` = ''', REPLACE(`image_name`, '.png', '.webp'), ''' WHERE `id` = ', `id`, ';' ) AS update_query FROM `gallery` WHERE `image_name` LIKE '%.png';
执行后会得到5000条独立的UPDATE语句,复制所有结果(去掉表头),粘贴到phpMyAdmin的SQL面板中执行即可。
关键注意事项
- 操作前必须备份数据:在phpMyAdmin中选中
gallery表,点击「导出」完成备份,防止操作失误丢失数据。 - 若有部分PNG文件无需转换,可修改
WHERE条件排除,比如:WHERE image_name LIKE '%.png' AND image_name NOT LIKE '保留文件_%.png'。 - 处理超大批量数据时,可分批次执行避免超时,比如每次更新1000条:
UPDATE `gallery` SET `image_name` = REPLACE(`image_name`, '.png', '.webp') WHERE `image_name` LIKE '%.png' LIMIT 1000;
重复执行直到所有PNG记录更新完成。
内容的提问来源于stack exchange,提问作者Joe Kerr
相关产品推荐
相关产品推荐

