PostgreSQL:以非编程方式(使用工具)选择大对象(例如,文本)

标签 postgresql jdbc

我们将 PostgreSQL 与 JPA 结合使用,它将大字符串映射到类型为 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    | 

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

                   ^^^^^^^

编辑:如果我使用 JDBC 执行相同的查询,我会得到预期的内容(我存储在列中的文本)

最佳答案

也许“常见嫌疑人”之一(即 JPA/Hibernate/PostgreSQL JDBC 驱动程序)将列映射到 PostgreSQL 的“大对象”系统。

psql shell 中的快速测试:

db=> \lo_export 282878 /tmp/x.txt
lo_export

会将示例中第一个 id 引用的内容导出到文件 /tmp/x.txt 中。与编辑器一起检查。告诉我们这是否是您的数据。

如果这种映射真的发生了,那么你就有了维护问题——大对象必须手动删除,并且有一些其他的内在缺点。但那是另一回事了。

关于PostgreSQL:以非编程方式(使用工具)选择大对象(例如,文本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9432884/

相关文章:

sql - Oracle 错误 ORA-00971

c# - visual studio 2015 发布输出 setup.exe 有错误

sql - Psql - 错误 : column "avclass" does not exist - selecting counts and percentages for columns that are grouped

ruby-on-rails - 在 rails 中使用 postgres 查询检查空字段或空字段

java - 保存到数据库使按钮无响应

mysql - JDBC:DriverManager.getConnection(url)不读取用户/密码

python - 使用 SQLAlchemy 在 Postgres 中进行不区分大小写的索引

sql-server - PostgreSQL 中外部应用的等效语法是什么

java - 从内部联接更新 ResultSet 中的行

java - 在 Ubuntu 14.04 LTS 上的 Tomcat 7 中找不到 MySQL JDBC 驱动程序