私は、MySQLデータベースのblobフィールドにイメージデータを格納したテーブルを持っています。 SQLだけを使って、それらのイメージをファイルシステム上のファイルにエクスポートする方法はありますか?イメージの名前は{imageId} .jpgMySQLデータベースからBlobをSQLのみでファイルにエクスポート
これはJavaや他のどのSQLスクリプトでも可能ですがわかりますか?
私は、MySQLデータベースのblobフィールドにイメージデータを格納したテーブルを持っています。 SQLだけを使って、それらのイメージをファイルシステム上のファイルにエクスポートする方法はありますか?イメージの名前は{imageId} .jpgMySQLデータベースからBlobをSQLのみでファイルにエクスポート
これは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
ユーザーとして書き込み権限を持っていると仮定すると
mysql> call dump_image(); ERROR 1329 (02000): No data - zero rows fetched, selected, or processed
ls -1 /tmp/xyz*
あなたは 'this_id'をどこで設定しましたか?あなたは何も渡さなかったし、procに設定されていないので、クエリは失敗するだろう。そうでなければ、これはうまくいくように見える –
カーソルを 'fetch cur1 into this_id;' – ajreal
同意するのは自分自身の考え方が似ていないと思います。私のために破損したファイル –
ファイルは、あなたが行うことができます:
Select id,blob into dumpfile '/tmp/path' from table;
残念ながら、MySQLでは、ダンプファイルを式/変数として指定することはできません。ただし、ストアドプロシージャでラップして変数を使用すると、これを実現できます。
'outfile'の代わりに' dumpfile'を使うと、シリアライズされたJavaオブジェクトが役に立ちます。 –
あなたはそうです、DUMPFILEはoutfileよりも優れているようです – rasputino
これはおそらく、MySQLの実行対象ユーザがファイルシステムへの書き込みアクセス権を持っているかどうかによって異なります。 –
もちろん、それは可能ですか?私はfielsystemにアクセスするSQLコマンドを見たことがないので – suicide