MySQLデータベースのblobフィールドに保存されている画像データのテーブルがあります。 SQLのみを使用して、これらの画像をファイルシステム上のファイルにエクスポートする方法はありますか?画像には{imageId} .jpgという名前を付ける必要があります
Javaまたは何でも簡単にこれを行うことができますが、SQLスクリプトだけで可能ですか?
私はそのアイデアが好きではありません...
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(); エラー1329(02000):データなし-ゼロ行がフェッチ、選択、または処理されました
ls -1/tmp/xyz *
INTO
を使用 で、ファイルを保存する場所にmysql
ユーザーとして書き込み権限があると仮定すると、次のことができます。
SELECT id, blob INTO DUMPFILE '/tmp/path' FROM table;
残念ながら、MySQLでは、ダンプファイルを式/変数として指定することはできません。ただし、ストアドプロシージャにラップして変数を使用すると、これを実現できます。