我们正在使用带有JPA的PostgreSQL,它将大字符串映射到具有类型的列TEXT.
虽然以编程方式我们能够读取和写入数据,但是当我选择数据时,pgAdmin和psql只显示对象ID.
有没有一种方法/工具可以快速选择数据而无需使用某些API(例如,JDBC)?
一个例子:
doi=> \d+ xmlsnippet;
Table "doi.xmlsnippet"
Column | Type | Modifiers | Storage | Description
--------------+------------------------+-----------+----------+-------------
dbid | bigint | not null | plain |
version | bigint | not null | plain |
datasnippet | text | | extended |
doi | character varying(255) | | extended |
doipool_dbid | bigint | | plain |
Run Code Online (Sandbox Code Playgroud)
该列datasnippet包含一些大字符串(使用XML代码)
当我选择它时,我明白了
doi=> select * from xmlsnippet;
dbid | version | datasnippet | doi | doipool_dbid
-------+---------+-------------+--------------------------+--------------
43 | 0 | 282878 | 10.3929/ethz-a-000077127 | 13
44 | 0 | 282879 | 10.3929/ethz-a-000085677 | 13
45 | 0 | 282880 | 10.3929/ethz-a-000085786 | 13
46 | 0 | 282881 | 10.3929/ethz-a-000087642 | 13
47 | 0 | 282882 | 10.3929/ethz-a-000088898 | 13
^^^^^^^
Run Code Online (Sandbox Code Playgroud)
编辑:如果我使用JDBC执行相同的查询,我会得到预期的内容(我存储在列中的文本)
也许"常见的嫌疑人"之一(即JPA/Hibernate/PostgreSQL JDBC驱动程序)将该列映射到PostgreSQL的"大对象"系统中.
psqlshell中的快速测试:
db=> \lo_export 282878 /tmp/x.txt
lo_export
Run Code Online (Sandbox Code Playgroud)
会将您示例中第一个id引用的内容导出到文件中/tmp/x.txt.用编辑器检查一下.告诉我们这是否是您的数据.
如果真的发生了这种映射,那么你就有了一个维护问题 - 必须手工删除大对象,并且还有一些其他的内在缺点.但这是另一个故事.
| 归档时间: |
|
| 查看次数: |
3607 次 |
| 最近记录: |