Exportation de Blob De La base de données MySQL vers un fichier avec uniquement SQL

J'ai une table avec des données d'image stockées dans un champ blob dans une base de données MySQL. Est-il un moyen d'exporter ces images sur le système de fichiers en utilisant uniquement SQL? Les images doivent être nommées {imageId}.jpg

Je sais qu'il est facile de le faire avec Java ou autre mais est-ce possible avec juste un script SQL?

23
demandé sur suicide 2011-01-10 14:57:07

2 réponses

Je n'aime pas l'idée ...

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 ;

, Malgré l'erreur

mysql> call dump_image();
ERROR 1329 (02000): No data - zero rows fetched, selected, or processed
ls -1 /tmp/xyz*
13
répondu ajreal 2011-01-10 13:09:18

En Supposant que vous avez l'autorisation d'écriture comme le mysql utilisateur à l'emplacement où vous souhaitez stocker les fichiers, vous pouvez le faire:

Select id,blob into dumpfile '/tmp/path' from table;

Malheureusement, dans MySQL, il n'est pas possible de spécifier le fichier dump en tant qu'expression / variable. Cependant, vous pouvez y parvenir si vous l'enveloppez dans une procédure stockée et utilisez des variables.

16
répondu Shaun Hare 2015-12-01 17:59:25