PostgreSQL: выделение больших объектов (например, текста) не программно (с помощью инструмента) - PullRequest
3 голосов
/ 24 февраля 2012

Мы используем PostgreSQL с JPA, который отображает большие строки в столбцы с типом TEXT.

Хотя программно мы можем читать и записывать данные, pgAdmin и psql просто показывают мне идентификатор объекта при выборе данных.

Есть ли способ / инструмент для быстрого выбора данных без использования какого-либо 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, я получаю ожидаемое содержимое (текст, который я сохранил в столбце)

Ответы [ 2 ]

6 голосов
/ 27 февраля 2012

Возможно, один из "обычных подозреваемых" (то есть драйвер JDBC JPA / Hibernate / PostgreSQL) сопоставил столбец с системой "Большой объект" PostgreSQL.

Быстрый тест в оболочке psql:

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

экспортирует материал, на который ссылается первый идентификатор из вашего примера, в файл /tmp/x.txt. Изучите это с редактором. Скажите нам, это ваши данные или нет.

Если этот вид отображения действительно имел место, то у вас есть проблема с обслуживанием - большой объект должен быть удален вручную и иметь некоторые другие внутренние недостатки. Но это другая история.

2 голосов
/ 07 марта 2016

В pgAdmin III я использую:

select dType, id, loread(lo_open(docxml::::int, 131072), 999999999) from XmlPadraoNFe

См .: pgAdmin III: Как просмотреть BLOB-объект?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...