>source

API에서 기본 64 이미지를 가져 오는 프로젝트에서 작업하고 있으며 Oracle 테이블에 이미지 (BLOB)로 저장하고 싶습니다. 이것은 내가하려고했던 것입니다. 그러나 물론 그것은 작동하지 않았습니다.

//The real image64 String is around 40k of length
String image64= "/9j/4AAQSkZJRgABAQAAAQABAAD......RzUUUBB2UtRREOFFFFpa//Z";
Statement stmt= connection.createStatement();
stmt.executeQuery("INSERT INTO INFO (IMAGE) VALUES (TO_BLOB('"+image64+"'))");

i는 다음과 같습니다.

java.sql.SQLException: ORA-01704 String literal too long

이제, 나는 그 주위를 돌아 다니는 방법은 문자열을 덩어리로 나누고 다음과 같이 삽입하는 것입니다.

INSERT INTO INFO (IMAGE) VALUES (TO_BLOB('"+chunk1+"') || (TO_BLOB('"+chunk2+"') || ...))

나는 그것을하려고 노력했다. 그러나 첫 번째 code 스 니펫에 주석을 껐다 켜진 것처럼, 문자열은 약 40K의 길이이므로 4000 자의 덩어리로 나눌 수 있습니다. 완전히. String Type Capacity 또는 뭔가를 오버플로 한 경우처럼 갑작갑니다.

이것은 내가 보내는 것입니다 :

INSERT INTO INFO (IMAGE) VALUES (
TO_BLOB('/9jGOL5K...really long string...MdlNjgx45ouz')
|| TO_BLOB('U1hNR...really long string...95hcktXXLHV0uOW5tSQV')
|| TO_BLOB('RcB7Z...really long string...S6P4mGN3eXny6trpcI4X')
|| TO_BLOB('eOy4n...really long string...MrS06QOZ8Su2Tl8hjxH1')
|| TO_BLOB('7SNrA...really long string...TmyBzdiC2ye8drBNWaPi')
|| TO_BLOB('H1rnk...really long string...O5dqJ86r6bIxwxxf0bA3')
|| TO_BLOB('TxS0N...really long string...ZOT+7A9w+QVjZGvbqY15')
|| TO_BLOB('eHEiR...really long string...Lm3ECxuzQ9xdbiNtQBJ6')
|| TO_BLOB('o8Kjj...really long string...eDR1FqywLLlukprsXFk7')
|| TO_BLOB('ALzL/...really long string...PC6nmNf6Ip+vL4beqAF8')
)

이는 서버가 얻는 것입니다 (Navicat 11.0.8에 따라).

INSERT INTO INFO (IMAGE) VALUES (
    TO_BLOB('/9jGOL5K...really long string...MdlNjgx45ouz')
    || TO_BLOB('U1hNRwniiRW6rdyXZz8QSQulYBqYO95

보시다시피 두 번째 청크로 간신히 만들었습니다. 나는이 오류를 얻지 못한다.

[Err] ORA-00933: command not properly ended

나는 이것을 처리하는 방법을 정말로 모른다. 나는 똑같은 일을하려고 노력했지만 대신 멍청이와 아무 것도 바뀌지 않았습니다. 아이디어? Oracle.sql.blob 패키지에 Blob 유형이 있는지 알고 있지만 문서를 읽는 방법이나 사용 방법을 이해하지 못했습니다.

아이디어?

일반적 으로이 이유로 데이터베이스에 이미지를 저장하는 것이 좋습니다. 자신의 code에서 변환을하는 것으로 간주되며 바이너리 데이터를 거기에서 삽입하십시오.

Thorbjørn Ravn Andersen2021-09-19 05:24:10

그래, 나는 그것을 바이너리로 변환하는 것에 대해 뭔가를 보았지만 그 code를 어떻게 보았는지 모르겠다. 내가 본 예는 분명하지 않다.

Vinícius Abner2021-09-19 05:24:10
  • 이전 python : 숫자가 프라임인지 확인하십시오
  • 다음 css : 부트 스트랩 부모 자녀가 서로에 상대적인 자식 위치 지정