2012-07-02 2 views
4

에서 바이너리 데이터를 삽입 나는이 SQLite는 테이블이 있습니다SQLite는 : 명령 행

create table mytable (
aid INTEGER NOT NULL PRIMARY KEY, 
bid INTEGER NOT NULL, 
image BLOB 
); 

을 그리고 나는이 테이블의 image 필드에 이진 파일을 삽입 할. sqlite3 명령 줄 인터페이스에서 가능합니까? 그렇다면 어떻게? 우분투를 사용하고 있습니다.

감사합니다. .

답변

3

당신은 같은 구문을 사용할 수 있습니다 : BLOB의 값 주위에 고양이 명령 주위의 역 인용 부호를 참고 난에 대한 확실하지 않다

echo "insert into mytable values(1,1, \"`cat image`\")" | sqlite3 yourDb 

은은 "고양이 명령은 에코 이전에 실행된다는 것을 의미합니다

.

[편집]

물방울이 "X"접두어 헥사 숫자로 저장됩니다. 이미지를 읽기 명령 줄 도구를 작성하는 방법은 헥사 문자열을 생산하기 위해 "16 진 덤프"유닉스 명령을 사용할 수 있지만, 더 나은 것 및 삽입을하십시오. 자세한 내용은 N이 게시물 : http://comments.gmane.org/gmane.comp.db.sqlite.general/64149

+0

답장을 보내 주셔서 감사합니다. 불행히도 이것은 비 - 바이너리 파일에서만 작동합니다. 텍스트를 삽입 할 수 있지만 예를 들어 jpg 이미지는 물론 다른 유형의 이진 데이터도 삽입 할 수 없습니다. 왜 그런지 알고 있니? – MobileCushion

+0

어쩌면 uuencode와 같은 것으로 삽입하기 전에 이진 파일을 인코딩해야합니까? "cat"명령이 db insert에 사용할 수없는 출력을 생성 할 수 있습니다. – Arcadien

+0

gmane 링크가 죽어있는 것처럼 보입니다. –

9

sqlite3를 command line interface 다음 두 "애플리케이션 정의"기능을 추가 일반적으로 사용된다

  • readfile
    을 :으로 파일을 기록 INSERT INTO table(blob) VALUES (readfile('myimage.jpg'))
  • writefile
    데이타베이스 blob의 내용. 기입해진 바이트를 돌려 준다.
+1

이 버전은 'SQLite Release 3.8.6 On 2014-08-15' 이상의 버전에서 작동합니다 –