web-dev-qa-db-ja.com

MySQLデータベースからSQLのみを使用してファイルにBlobをエクスポートする

MySQLデータベースのblobフィールドに保存されている画像データのテーブルがあります。 SQLのみを使用して、これらの画像をファイルシステム上のファイルにエクスポートする方法はありますか?画像には{imageId} .jpgという名前を付ける必要があります

Javaまたは何でも簡単にこれを行うことができますが、SQLスクリプトだけで可能ですか?

25
suicide

私はそのアイデアが好きではありません...

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 *
14
ajreal

INTOを使用 で、ファイルを保存する場所にmysqlユーザーとして書き込み権限があると仮定すると、次のことができます。

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

残念ながら、MySQLでは、ダンプファイルを式/変数として指定することはできません。ただし、ストアドプロシージャにラップして変数を使用すると、これを実現できます。

19
Shaun Hare