2014-10-30 82 views
3

我有一個圖像數據庫。帶有兩個bytea列的圖像表。我想查詢表格並查看這些列以查看這些條目是否存儲圖像。因爲它們是可空的列。PostgreSQL psql命令行顯示bytea列

當前,當我使用psql命令行查詢數據庫時,我的整個命令行屏幕變爲空白,試圖顯示bytea。

我已經搜索了一段時間,無法找到合適的方式來顯示錶格。理想情況下,會顯示第一個「x」字符。

我可以確認,如果上傳一個微小的小圖片足夠小,字節將打印。

這是我所看到的,當我做:SELECT * FROM Image;

my view when querying this table

回答

4

可以使用encode功能:

select encode(bytea_column, 'hex') 
from image; 

如果你只是想看到的第一個字節,只需使用left()功能:

select left(encode(bytea_column, 'hex'), 40) 
from image; 

手冊中的更多細節:
http://www.postgresql.org/docs/current/static/functions-binarystring.html

+0

謝謝你。這正是我想要的。 :D我發現,即使編碼爲十六進制的非常大的圖像也不夠。但限制爲前40個字符是我需要的:D – tjheslin1 2014-10-31 14:47:35

1

您可以切換擴展使用以下命令

\x 
+1

是的,這是關於'psql'輸出的格式,而不是關於查詢。 – 2014-10-30 21:53:29

3

格式化模式如果你是不是想給自己解釋的二進制數據,爲什麼不只是做:

select length(img1), length(img2) from Image 

select img1 is null, img2 is null from Image 
+0

感謝您提出這些建議。我標記另一個爲答案,正如我所說的「理想情況下,第一個'x'字符會顯示」在我的問題。但是,這些是很好的選擇:D – tjheslin1 2014-10-31 14:48:29