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