Подтвердить что ты не робот

Экспорт Blob из базы данных MySQL в файл только с SQL

У меня есть таблица с данными изображения, хранящимися в поле blob в базе данных MySQL. Есть ли способ экспортировать эти изображения в файлы в файловой системе, используя только SQL? Изображения должны быть названы {imageId}.jpg

Я знаю, что это легко сделать с помощью Java или любого другого, но возможно ли это с помощью SQL script?

4b9b3361

Ответ 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 невозможно указать дамп файл как выражение/переменную. Тем не менее, вы могли бы достичь этого, если бы обернули его в хранимую процедуру и использовали переменные.