Экспорт Blob из базы данных MySQL в файл только с SQL
У меня есть таблица с данными изображения, хранящимися в поле blob в базе данных MySQL. Есть ли способ экспортировать эти изображения в файлы в файловой системе, используя только SQL? Изображения должны быть названы {imageId}.jpg
Я знаю, что это легко сделать с помощью Java или любого другого, но возможно ли это с помощью SQL script?
Ответы
Ответ 1
Мне не нравится идея...
drop procedure if exists dump_image;
delimiter //
create procedure dump_image()
begin
declare this_id int;
declare cur1 cursor for select imageId from image;
open cur1;
read_loop: loop
fetch cur1 into this_id;
set @query = concat('select blob_field from image where imageId=',
this_id, ' into outfile "/tmp/xyz-', this_id,'.jpg"');
prepare write_file from @query;
execute write_file;
end loop;
close cur1;
end //
delimiter ;
Несмотря на ошибку
mysql> call dump_image();
ERROR 1329 (02000): No data - zero rows fetched, selected, or processed
ls -1 /tmp/xyz*
Ответ 2
Используя INTO
и предполагая, что у вас есть разрешение на запись в качестве пользователя mysql
в том месте, где вы хотите хранить файлы, вы можете сделать:
SELECT id, blob INTO DUMPFILE '/tmp/path' FROM table;
К сожалению, в MySQL невозможно указать дамп файл как выражение/переменную. Тем не менее, вы могли бы достичь этого, если бы обернули его в хранимую процедуру и использовали переменные.