Экспорт Blob из базы данных MySQL в файл только с SQL - PullRequest
24 голосов
/ 10 января 2011

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

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

Ответы [ 2 ]

18 голосов
/ 10 января 2011

Используя INTO и предполагая, что у вас есть разрешение на запись в качестве пользователя mysql в том месте, где вы хотите сохранить файлы, вы можете сделать:

SELECT id, blob INTO DUMPFILE '/tmp/path' FROM table;

К сожалениюВ MySQL невозможно указать дамп-файл как выражение / переменную.Однако этого можно добиться, если вы обернетесь в хранимую процедуру и будете использовать переменные.

14 голосов
/ 10 января 2011

Мне не нравится идея ...

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*
...