2014-04-16 2 views
0

BLOB의 내용을 파일로 어떻게 덤프합니까? 문제는 결과 파일이 서버가 아닌 클라이언트에 저장되어야하며 솔루션은 셸 스크립트에서 처리되어야한다는 것입니다. 이 아닌 클라이언트에서 서버에 직접 파일을 저장하기 때문MySql : 로컬 파일에 BLOB 덤프

SELECT ... INTO OUTFILE/DUMPFILE ... 

이 실패합니다.

echo "USE my_db; SELECT my_blob FROM my_table LIMIT 1" | mysql --<connection params> > $OUTFILE 

은 로컬 $ OUTFILE에 데이터가 왜곡됩니다. 일부 서식이 포함되어 있습니다.

모든 서식을 제거하는 방법이 있습니까? 또는 파일에 1 : 1 덤프를 가져 오는 방법은 무엇입니까?

모든 도움을 주시면 대단히 감사하겠습니다.

답변

0

적절한 옵션을 사용하는 한 MySQL client으로 이것을 수행 할 수 있습니다.

특히 double-silent mode을 사용하여 테이블 서식과 열 이름을 표시하지 말고 raw mode을 사용하여 문자를 이스케이프 처리하지 않아야합니다.

mysql --<connection params> \ 
my_db \ 
--raw \ 
--silent \ 
--silent \ 
--execute \ 
"SELECT my_blob FROM my_table LIMIT 1" > $OUTFILE 
+0

감사 :

다음은 명령의 업데이트가 당신이 올바른 궤도에 당신을 얻을해야 시도입니다! 그러나이 완벽하게 내 테이블에있는 모든 열을 작동하지만 Blob 열에서 결과는 비어 있습니다. 마치 자동 모드로 바이너리 데이터 출력을 사용할 수 없게되는 경우 ... 문제의 응용 프로그램이 여전히 mysql 4.x – svenson

+0

해당 행에서 BLOB 값이 NULL입니까? 어쩌면'SELECT my_blob FROM my_table WHERE my_blob IS NOT NULL LIMIT 1' –

+0

이 테이블에는 단 하나의 행만 있습니다. 귀하의 whereclause를 추가했지만 예상대로 바뀌지 않습니다 ... 다른 열을 선택하면 blob 열을 선택하면 아무 것도 반환되지 않거나보다 정확하게 1 바이트 (0A, LF)를 반환합니다. – svenson