복붙노트

[SQL] 단지 SQL과 파일에 MySQL 데이터베이스에서 물방울 내보내기

SQL

단지 SQL과 파일에 MySQL 데이터베이스에서 물방울 내보내기

내가 MySQL 데이터베이스에 BLOB 필드에 이미지 데이터가 저장된 테이블을 가지고있다. 단지 SQL을 사용하여 파일 시스템의 파일에 그 이미지를 내보낼 수있는 방법이 있습니까? 이미지는 {imageId} .JPG 이름을 지정해야합니다

나는 자바이든이 작업을 수행하기 쉽지만 그냥 SQL 스크립트를 사용 가능하다는 것을 알아?

해결법

  1. ==============================

    1.내가 생각처럼 안 ...

    내가 생각처럼 안 ...

    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();
    ERROR 1329 (02000): No data - zero rows fetched, selected, or processed
    
    ls -1 /tmp/xyz*
  2. ==============================

    2.INTO를 사용하여, 당신은 당신이 파일을 저장하고자하는 위치에 MySQL의 사용자로 쓰기 권한이 가정, 당신은 할 수 있습니다 :

    INTO를 사용하여, 당신은 당신이 파일을 저장하고자하는 위치에 MySQL의 사용자로 쓰기 권한이 가정, 당신은 할 수 있습니다 :

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

    불행하게도, MySQL의에서 표현식 / 변수로 덤프 파일을 지정할 수 없습니다. 저장 프로 시저 및 사용 변수에 싸서 경우, 당신이 이것을 달성 할 수있다.

  3. from https://stackoverflow.com/questions/4646533/exporting-blob-from-mysql-database-to-file-with-only-sql by cc-by-sa and MIT license