如何使用 mongodb_fdw 将动态 JSON 对象绑定到 PostgreSQL?
How to bind dynamic JSON objects to PostgreSQL, using mongodb_fdw?
Foreign Data Wrapper for MongoDB is pretty awesome! I've gotten it to work using these instructions,除了:
其中包含动态字段的对象 - 哪种 PostgreSQL 类型用于此类?
{
"key1":一些,
...
}
对象数组 - 哪种 PostgreSQL 类型用于此类?数组的长度可能会有所不同,但对象的内部结构是统一的。
[ { "a": 1 }, { "a": 2 }, { "a": 3 } ]
我在最近的 PostgreSQL 版本中发现 these slides JSON 功能。整洁的。但是 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
等都有效。
EnterpriseDB fork 做到了,正如@pozs 指出的那样。只需将您的数据标记为 JSON
类型。
然而,构建系统对我来说相当奇怪,并没有真正为您提供缺少构建组件的正确错误(它显然是基于 Linux 的,只是希望您拥有一堆工具而无需正确检查它们)。
以下是我如何在 OS X + Homebrew:
上构建它
$ brew install libtool libbson autoconf automake
$ ./autogen.sh --with-legacy
请注意 --with-meta
变体 不 提供 JSON 支持,这就是我选择这个分支的原因。
Foreign Data Wrapper for MongoDB is pretty awesome! I've gotten it to work using these instructions,除了:
其中包含动态字段的对象 - 哪种 PostgreSQL 类型用于此类?
{ "key1":一些, ... }
对象数组 - 哪种 PostgreSQL 类型用于此类?数组的长度可能会有所不同,但对象的内部结构是统一的。
[ { "a": 1 }, { "a": 2 }, { "a": 3 } ]
我在最近的 PostgreSQL 版本中发现 these slides JSON 功能。整洁的。但是 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
等都有效。
EnterpriseDB fork 做到了,正如@pozs 指出的那样。只需将您的数据标记为 JSON
类型。
然而,构建系统对我来说相当奇怪,并没有真正为您提供缺少构建组件的正确错误(它显然是基于 Linux 的,只是希望您拥有一堆工具而无需正确检查它们)。
以下是我如何在 OS X + Homebrew:
上构建它$ brew install libtool libbson autoconf automake
$ ./autogen.sh --with-legacy
请注意 --with-meta
变体 不 提供 JSON 支持,这就是我选择这个分支的原因。