use*_*268 5 java postgresql jboss jdbc composite-types
我们正在从Oracle迁移到PostgreSQL Enterprise DB,我们有一个接受表格式结构的存储过程.我们将STRUCT与Oracle结合使用,效果非常好.现在这个表在PostgreSQL中配置为包含其他UDT-s表的UDT,它可以从PostgreSQL层调用.
我找不到关于如何使用PostgreSQL JDBC驱动程序将复合类型作为复合类型集合或复合类型数组传递的适当支持或文档.
我能够通过传递我的PGobject实现来调用该过程.我的getValue()方法将对象数据转换为以下格式的字符串:
{row(key,1596156006),row(dataHeader2TDataHeader,2782),row(identifier01,20373833),...}
但是我从PostgreSQL得到了错误的"格式错误的数组文字".
PostgreSQL版本是9.3.1,JDK 1.6,JBoss 3.2.8
PostgreSQL 中基本上有几个选项:
创建您自己的字符串表示形式并用 C、pl/perl、pl/pgsql 等编写解析器。
使用 ROW() 和 ARRAY[] 构造函数,或者
使用原始数据格式。
JSON(但这有限制!)
如果您要编写自己的字符串表示形式,则需要密切注意它在输入和输出上的解析方式。您甚至可以创建自己的类型而不使用复合类型。这在确保您始终了解输入和输出公式方面有一些有用的好处。
ROW() 和 ARRAY[] 构造函数可以一起使用。在这种情况下,您可以:
ARRAY[ROW(1, 'foo')::bar, ROW(2, 'baz'), ROW(3, 'foobar,')]
Run Code Online (Sandbox Code Playgroud)
最后是原始数据格式。它们使用嵌套 CSV(包括双引号),其中 {csv} 表示数组,(csv) 表示行。上面的内容应该是这样的:
'{"(1,foo)","(2,baz)","(3,""foobar,"")"}'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1454 次 |
| 最近记录: |