JSON 객체를 별도의 유형으로 저장하려면 어떻게해야합니까?

schorle88

반 영원 동안 Java와 PreparStatement를 사용하여 Postgres에서 JSON 배열을 저장하려고했습니다.

Postgres에서 내 유형을 사용합니다.

불행히도 항상 유형 오류 메시지가 나타납니다.

다음은 내 테이블에 데이터를 삽입하는 Postgres 함수입니다.

CREATE OR REPLACE FUNCTION "Portfolio"."Einfuegen"(
"dokumenteIN" "Portfolio".t_dokumente[],
"finanzenIN" numeric[],
"bildIN" bytea)
RETURNS character varying
LANGUAGE 'plpgsql'

COST 100
VOLATILE 
AS $BODY$
BEGIN
  INSERT INTO "Portfolio"."Historie" (dokumente,finanzen,bild) VALUES 
("dokumenteIN","finanzenIN","bildIN");
return 'Gesichert';
END;
$BODY$;

내 사용자 정의 유형은 다음과 같습니다.

 CREATE TYPE "Portfolio".t_dokumente AS
(
 inhalt json[]
);

ALTER TYPE "Portfolio".t_dokumente
OWNER TO postgres;

Java로 일부 JSON 배열 데이터를 삽입하려고합니다.

    for (int i = 0; i < arrayDokus.length(); ++i) {

        JSONObject rec = arrayDokus.getJSONObject(i);
        String nameBild = rec.getString("Name");
        String inhalt = rec.getString("Inhalt");

        byte[] in = inhalt.getBytes();

        try {
            Blob blob = new SerialBlob(in);

            JSONObject neuesObjekt = new JSONObject();
            neuesObjekt.append("Name", nameBild);
            neuesObjekt.append("Inhalt", blob);

            where.add(neuesObjekt);
            
            

        } catch (SerialException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

   
    PGobject jsonObject = new PGobject();
    jsonObject.setType("json[]");
    jsonObject.setValue(where.toString());


    PreparedStatement stmt = con.prepareStatement("SELECT * FROM \"Portfolio\".\"Einfuegen\" 
   (?::\"Portfolio\".t_dokumente[],?,?)");
            
        
            stmt.setObject(1, jsonObject);
            stmt.setArray(2, f);
            stmt.setBinaryStream(3,in);
            ResultSet rs = stmt.executeQuery();
            con.commit();

          [...]

하지만 오류가 발생했습니다.

org.postgresql.util.PSQLException : 오류 : json [] 유형을 "Portfolio".t_dokumente [] 유형으로 변환 할 수 없습니다.

무거운

"dokumenteIN" "Portfolio".t_dokumente[]당신이 원하는 말한다 포스트 그레스 의 배열 t_dokumente자체 인을 json[]. 그것은 그것을 만든다 json[][]: JSON의 Postgres 배열의 Postgres 배열. 같은 것 array[['{"foo": 23}'::json]].

그러나 "Portfolio".t_dokumente[]단일 필드가있는 복합 유형 인 흡입입니다. 어떻게 작동하는지 잘 모르겠습니다.

이것은 불필요하게 복잡합니다. JSON은 이미 배열 및 키 / 값 쌍을 지원합니다. 할 수있는 가장 간단한 것은 바로 사용하는 것입니다 jsonb: dokumenteIN jsonb. jsonb, 아닙니다 json. 왜냐하면 전반적으로 훨씬 더 효율적이기 때문입니다.

실질적인 주요 차이점은 효율성입니다. json 데이터 유형은 입력 텍스트의 정확한 사본을 저장하며, 처리 함수는 각 실행에서 재분석해야합니다. jsonb 데이터는 분해 된 바이너리 형식으로 저장되어 추가 된 변환 오버 헤드로 인해 입력 속도가 약간 느리지 만 재분석이 필요하지 않으므로 처리 속도가 훨씬 빠릅니다. jsonb는 인덱싱도 지원하므로 상당한 이점이 될 수 있습니다.

그런 다음 JSON 객체의 JSON 배열을 사용할 수 있습니다 '[{"inhalt": "first"}, {"inhalt": "second"}]'..

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Python에서 JSON 개체 요소를 별도의 배열로 분리하려면 어떻게해야합니까?

분류에서Dev

분기를 별도의 원격 저장소로 푸시하려면 어떻게해야합니까?

분류에서Dev

거의 모든 것이 배열로 저장되는 형식으로 Json 데이터에서 정보를 검색하려면 어떻게해야합니까?

분류에서Dev

f #에서 유형으로 정의 된 객체를 기반으로 새로운 불변 객체를 생성하려면 어떻게해야합니까?

분류에서Dev

JavaScript 객체 (JSON)를 JSV 형식으로 변환하려면 어떻게해야합니까?

분류에서Dev

jq를 사용하여 여러 입력 json 객체의 데이터를 하나의 출력 객체로 복사하려면 어떻게해야합니까?

분류에서Dev

MIXED 유형의 객체를 포함하는 json 스키마 배열의 유효성을 검사하려면 어떻게해야합니까?

분류에서Dev

jq를 사용하여 값이 주어진 기준과 일치하는 JSON 객체의 모든 경로를 찾으려면 어떻게해야합니까?

분류에서Dev

C API 콜백에 액세스 할 수 있도록 trait 객체를 전역 적으로 저장하려면 어떻게해야합니까?

분류에서Dev

API 경로를 사용하는 경우 미들웨어가 json 객체로 응답하도록하려면 어떻게해야합니까?

분류에서Dev

CPU 사용량별로 정렬하기 위해 뷰를 저장하려면 어떻게해야합니까?

분류에서Dev

JSON 파일의 배열에 데이터를 푸시하고 저장하려면 어떻게해야합니까?

분류에서Dev

Windows를 개별적으로 확장하려면 어떻게해야합니까?

분류에서Dev

Node.js의 JSON, Date 또는 기타 '네이티브'객체에 전역 적으로 메서드를 추가하려면 어떻게해야합니까?

분류에서Dev

특정 조건의 몽구스로 구별되는 객체를 얻으려면 어떻게해야합니까?

분류에서Dev

json 객체에서 이미지를로드하고 각도 UI 그리드에 표시하려면 어떻게해야합니까?

분류에서Dev

저장소별로 로컬 Docker 이미지를 삭제하려면 어떻게해야합니까?

분류에서Dev

파일 각 줄의 두 번째 단어를 문자로 저장하려면 어떻게해야합니까?

분류에서Dev

JSON 데이터를 객체로 올바르게 추출 / 변환하려면 어떻게해야합니까?

분류에서Dev

Aeson 객체를 내 사용자 정의 유형으로 구문 분석하려면 어떻게해야합니까?

분류에서Dev

ChomiumOS를 설치하고 별도의 X ession으로 실행하려면 어떻게해야합니까?

분류에서Dev

개체 유형별로 동적 유형 <T>를 설정하려면 어떻게해야합니까?

분류에서Dev

저장할 때 Python에서 SQL 열의 순서를 유지하려면 어떻게해야합니까?

분류에서Dev

홈 디렉토리를 별도의 파티션으로 이동하려면 어떻게해야합니까?

분류에서Dev

.net 코어의 큰 JSON 개체에서 하나의 속성을 얻으려면 어떻게해야합니까?

분류에서Dev

서비스에서 로컬 JSON 객체로 데이터를 매핑하려면 어떻게해야합니까?

분류에서Dev

Python의 CSV 파일에서 JSON 객체를 추출하려면 어떻게해야합니까?

분류에서Dev

Intellij의 Github에있는 새 저장소로 코드를 푸시하려면 어떻게해야합니까?

분류에서Dev

목록의 범위를 변수로 저장하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    Python에서 JSON 개체 요소를 별도의 배열로 분리하려면 어떻게해야합니까?

  2. 2

    분기를 별도의 원격 저장소로 푸시하려면 어떻게해야합니까?

  3. 3

    거의 모든 것이 배열로 저장되는 형식으로 Json 데이터에서 정보를 검색하려면 어떻게해야합니까?

  4. 4

    f #에서 유형으로 정의 된 객체를 기반으로 새로운 불변 객체를 생성하려면 어떻게해야합니까?

  5. 5

    JavaScript 객체 (JSON)를 JSV 형식으로 변환하려면 어떻게해야합니까?

  6. 6

    jq를 사용하여 여러 입력 json 객체의 데이터를 하나의 출력 객체로 복사하려면 어떻게해야합니까?

  7. 7

    MIXED 유형의 객체를 포함하는 json 스키마 배열의 유효성을 검사하려면 어떻게해야합니까?

  8. 8

    jq를 사용하여 값이 주어진 기준과 일치하는 JSON 객체의 모든 경로를 찾으려면 어떻게해야합니까?

  9. 9

    C API 콜백에 액세스 할 수 있도록 trait 객체를 전역 적으로 저장하려면 어떻게해야합니까?

  10. 10

    API 경로를 사용하는 경우 미들웨어가 json 객체로 응답하도록하려면 어떻게해야합니까?

  11. 11

    CPU 사용량별로 정렬하기 위해 뷰를 저장하려면 어떻게해야합니까?

  12. 12

    JSON 파일의 배열에 데이터를 푸시하고 저장하려면 어떻게해야합니까?

  13. 13

    Windows를 개별적으로 확장하려면 어떻게해야합니까?

  14. 14

    Node.js의 JSON, Date 또는 기타 '네이티브'객체에 전역 적으로 메서드를 추가하려면 어떻게해야합니까?

  15. 15

    특정 조건의 몽구스로 구별되는 객체를 얻으려면 어떻게해야합니까?

  16. 16

    json 객체에서 이미지를로드하고 각도 UI 그리드에 표시하려면 어떻게해야합니까?

  17. 17

    저장소별로 로컬 Docker 이미지를 삭제하려면 어떻게해야합니까?

  18. 18

    파일 각 줄의 두 번째 단어를 문자로 저장하려면 어떻게해야합니까?

  19. 19

    JSON 데이터를 객체로 올바르게 추출 / 변환하려면 어떻게해야합니까?

  20. 20

    Aeson 객체를 내 사용자 정의 유형으로 구문 분석하려면 어떻게해야합니까?

  21. 21

    ChomiumOS를 설치하고 별도의 X ession으로 실행하려면 어떻게해야합니까?

  22. 22

    개체 유형별로 동적 유형 <T>를 설정하려면 어떻게해야합니까?

  23. 23

    저장할 때 Python에서 SQL 열의 순서를 유지하려면 어떻게해야합니까?

  24. 24

    홈 디렉토리를 별도의 파티션으로 이동하려면 어떻게해야합니까?

  25. 25

    .net 코어의 큰 JSON 개체에서 하나의 속성을 얻으려면 어떻게해야합니까?

  26. 26

    서비스에서 로컬 JSON 객체로 데이터를 매핑하려면 어떻게해야합니까?

  27. 27

    Python의 CSV 파일에서 JSON 객체를 추출하려면 어떻게해야합니까?

  28. 28

    Intellij의 Github에있는 새 저장소로 코드를 푸시하려면 어떻게해야합니까?

  29. 29

    목록의 범위를 변수로 저장하려면 어떻게해야합니까?

뜨겁다태그

보관