2015-02-06 3 views
1

Foreign Data Wrapper for MongoDB은 꽤 멋지다! - 예에 사용하는 PostgreSQL의 유형mongodb_fdw를 사용하여 동적 JSON 객체를 PostgreSQL에 바인드하는 방법은 무엇입니까?

  • 그 안에서 동적 필드 객체 : 나는 그것을 떨어져에서 these instructions를 사용하여 작업 쪘 구만?

    { "키 1": 일부 ... }

  • 객체의 배열

  • - 등을 위해 사용하는 PostgreSQL의 유형? 배열의 길이는 다를 수 있지만 객체의 내부 구조는 동일합니다. 최근의 PostgreSQL 버전에서 JSON 기능에

내가 발견 these slides

[: {3 "A"} { "A": 1}, { "는"2}]. 산뜻한. 그러나 BSON, JSON 또는 JSONB은 FDW에서 SQL 데이터 유형으로 인식하지 못하는 것 같습니다.

내가 사용하는 경우 :

CREATE FOREIGN TABLE t6 
    (
     "aaa.bbb" JSON -- 'bbb' is an array of JSON objects 
) 
    SERVER mongo_server OPTIONS(...); 

    SELECT "aaa.bbb" AS bbb FROM t6; 

내가 얻을 :

psql:6.sql:152: ERROR: cannot convert bson type to column type 
HINT: Column type: 114 

일반적인 유형 TEXT, FLOAT 등 작업.

+0

* BSON, JSON 또는 JSONB는 FDW에서 SQL 데이터 형식으로 인식하지 않는 것 같습니다. * - 무엇을 시도 했습니까? 오류 메시지가 있다면 무엇입니까? 오류가 없다면 (예기치 않은) 결과는 무엇입니까? – pozs

+0

ok, 약간의 세부 사항을 추가했습니다 – akauppi

+0

[비슷한 기능 요청] (https://github.com/citusdata/mongo_fdw/issues/19)에 따르면 사용하는'mongo_fdw '는 업데이트되지 않습니다; 그러나 당신이 문서에서 json 배열이나 객체를 가지고있는 곳의'json' sql 타입을 사용할 수있게 해주는 [EnterpriseDB fork] (https://github.com/EnterpriseDB/mongo_fdw)가 있습니다 ([ 현재 소스] (https://github.com/EnterpriseDB/mongo_fdw/blob/a159d42bd1b2190c47e8b97b5939415e07389d24/mongo_fdw.c#L1341)). – pozs

답변

0

@ pozs가 지적한대로 EnterpriseDB fork이 그랬습니다. 데이터를 JSON 유형으로 표시하십시오.

그러나 빌드 시스템은 제 취향에 다소 기괴하며 실제로 누락 된 빌드 구성 요소에 대해 올바른 오류를주지는 않습니다 (분명히 Linux 기반이며 단순히 도구를 적절히 검사하지 않고도 많은 도구를 갖출 것으로 기대합니다) .

는 여기에 내가 OS에 구축 X + Homebrew을 관리하는 방법은 다음 --with-meta 변종 나는 어쨌든이 포크에 들어갑니다 이유였다 JSON 지원을 제공하지 않습니다

$ brew install libtool libbson autoconf automake 
$ ./autogen.sh --with-legacy 

하는 것으로.

ref. https://github.com/EnterpriseDB/mongo_fdw/issues/20