2012-05-18 36 views
23

我有一個列中包含大量BLOB數據的表。我正在編寫一個實用程序將數據轉儲到文件系統。但在轉儲之前,我需要檢查磁盤上是否有必要的空間來導出整個表中的所有blob字段。計算表中BLOB列的總數據大小

請建議一個有效的方法來獲取表中所有blob字段的大小。

回答

30

您可以使用MySQL函數OCTET_LENGTH(your_column_name)。有關更多詳細信息,請參見here

+9

OCTET_LENGTH()是LENGTH()的同義詞, –

20
select sum(length(blob_column)) as total_size 
from your_table 
+0

感謝您的回覆。上述查詢所指示的大小低於磁盤上轉儲文件的總大小。任何想法可能是什麼原因? – jatinpreet

+1

@jatinpreet:我的猜測是這是因爲文件系統中的文件集羣。根據您的文件系統,文件將保存在4KB的塊中。這可能會把事情弄糟。但這只是一個猜測。 –

2
select sum(length(blob_column_name)) from desired_tablename; 
1

不幸的是,這是最好的數據庫。

要與甲骨文的斑點得到表的總大小我用如下: https://blog.voina.org/?p=374

可悲的是,這並不在DB2工作,我還是要找到一個替代。

簡單

select sum(length(blob_column)) as total_size 
from your_table 

不像是不會正確估計基礎上,參照存儲在您的BLOB列Blob中的BLOB大小正確的查詢。您必須從blob存儲庫獲取磁盤上實際分配的大小。