如何获取 XML 文件(存储在 SQL DB 中)的大小?

Posted

技术标签:

【中文标题】如何获取 XML 文件(存储在 SQL DB 中)的大小?【英文标题】:How to get the XML file (which is stored in SQL DB) size? 【发布时间】:2019-11-21 09:51:34 【问题描述】:

在我的数据库中,数据以二进制格式存储,通过 SQL 查询,我在查询中使用 CAST 将其转换为 XML。

现在,我想通过添加另一列来获取 SQL 中的 XML 文件。

注意:我不想将这些数据导出到文件位置,因为它有大量记录。

使用的查询:

select 
  AR.Column1, 
  AR.Column2, 
  CAST (Message as XML) AS "XML FILE"
from 
  [dbo].[Table1] AP 
  INNER JOIN [DBName].[dbo].[Table2] AR ON AR.Column1=AP.Column1 
where 
  (AR.InsertedDate BETWEEN '2019-11-19 00:00:00.000' AND '2019-11-19 23:59:59.477') 
  and AR.Column2='Delta' order by InsertedDate desc

【问题讨论】:

我仍然不清楚您的问题是什么,但 XML 或二进制列的大小(以字节为单位)可以通过 DATALENGTH 确定。 【参考方案1】:

DATALENGTH 在与可以存储可变长度数据的数据类型一起使用时变得非常有用,例如:

图片 ntext nvarchar 正文 变量二进制 varchar

SELECT AR.Column1, AR.Column2, 
       CAST (Message as XML) AS "XML FILE",
       CASE WHEN DATALENGTH(Message) <= 1024 THEN CONVERT(NVARCHAR, DATALENGTH(Message)) + ' BYTES'
            WHEN DATALENGTH(Message) >1024 AND DATALENGTH(Message) <= 1048576 THEN CONVERT(NVARCHAR, DATALENGTH(Message)/1024) + ' KB'
            WHEN DATALENGTH(Message) >1048576 AND DATALENGTH(Message) <= 1073741824 THEN   CONVERT(NVARCHAR, DATALENGTH(Message)/1048576) + ' MB'
            WHEN DATALENGTH(Message) >1073741824 AND DATALENGTH(Message) <= 109951162777  THEN   CONVERT(NVARCHAR, DATALENGTH(Message)/1073741824) + ' GB'
            ELSE CONVERT(NVARCHAR, DATALENGTH(Message)/109951162777) + ' TB' END AS "XML FILE SIZE"
FROM  [dbo].[Table1] AP 
INNER JOIN [DBName].[dbo].[Table2] AR ON AR.Column1=AP.Column1 
WHERE  (AR.InsertedDate BETWEEN '2019-11-19 00:00:00.000' AND '2019-11-19 23:59:59.477') 
       AND AR.Column2='Delta' 
ORDER BY InsertedDate DESC

【讨论】:

是的,你可以得到它,因为文件大小是整数值 @ManiRaghavendra 您能否发布带有预期数据和示例输入的新问题?

以上是关于如何获取 XML 文件(存储在 SQL DB 中)的大小?的主要内容,如果未能解决你的问题,请参考以下文章

嗨,我们可以使用自动电源将大 XML 文件存储到 azure sql db 中吗?

在OLE DB目标中插入数据

如何跟踪存储在 Oracle Berkeley DB XML 中的文件的更改

在 Linux 的文件系统上查找存储在 exists-db 中的 XML 文件

如何使用 Azure SQL db 中的存储过程一次性获取查询的所有批次?

使用 Iseries 上的 SQL DB2 从 WEB 获取 XML