Да, вы можете использовать запрос для обновления этих значений.
Сначала вам понадобятся логики c для преобразования значений типа 62197/Files/1582028253362.jpg
в значения типа 1582028253362.jpg
Попробуйте использовать SUBSTRING_INDEX () , что-то вроде этого:
SELECT SUBSTRING_INDEX(image_path, '/', -1)
Запустите это на некоторых ваших данных, чтобы убедиться, что вы работаете.
Затем выполните операцию UPDATE примерно так.
UPDATE user_post
SET image_path = CONCAT(
'https://s3-**********-1.amazonaws.com//abccdn/',
SUBSTRING_INDEX(image_path, '/', -1))
WHERE image_path NOT LIKE 'https://s3-%'
Обратите внимание, что ваши старые пути начинаются с такими номерами, как 62197/Files ...
Логика c, которую я вам дал, устраняет эти цифры. Это может или не может быть правильным для вашей ситуации: вы должны проверить.
Еще одна вещь, чтобы рассмотреть. Если вы можете, измените запрос SELECT, который вы используете, чтобы получить эти значения image_path
, чтобы он возвращал пути к вашему CDN. Оставьте значения image_path
в таблице без изменений и манипулируйте ими при извлечении. Затем, если что-то в вашей установке CDN изменится, вы можете изменить только запрос SELECT. Хороший способ сделать это - создать представление и использовать его при извлечении записей. Например:
CREATE OR REPLACE VIEW user_post_cdn AS
SELECT id, user_id, text,
CONCAT('https://s3-**********-1.amazonaws.com//abccdn/',
SUBSTRING_INDEX(image_path, '/', -1)) image_path,
video_path, created_date
FROM user_post;
Затем, когда вам нужны ваши пути cdn из базы данных, вы говорите что-то вроде этого.
SELECT * FROM user_post_cdn WHERE id = whatever;
Таким образом
- вы не рискуете повредить данные image_path, обновив их.
- если что-то изменится в вашей настройке CDN, вы можете просто изменить определение представления, и все будет работать.