我正在将数据导出到平面文件中,以便导入到SIEM中。有没有办法将每个项目显示为“column name = data”?
SELECT
[Description], [MessageDescription], [CardNumber],
[TimeStamp_Server], [SPMDescription] [CardHolderID],
[FirstName], [MiddleName], [LastName],
[CardStatusID], [CardStatusDescription], [Imprint],
[TransactionNumber]
FROM
[DB].[dbo].[Message]
WHERE
CONVERT(varchar(10), TimeStamp_Server, 120) = CONVERT(varchar(10), GETDATE(), 120)
下面是它当前在平面文件中的显示方式。
Description,MessageDescription,CardNumber,TimeStamp_Server,CardHolderID,FirstName,MiddleName,LastName,CardStatusID,CardStatusDescription,Imprint,TransactionNumber
North Entry,AccessGrantedNoEntry,0,2023-02-08 09:52:19,Retail Center C004 Converted PXL250-2DOOR,,,,,,,527312
我希望每行都显示为
Description = North Entry,
MessageDescription = AccessGrantedNoEntry,
CardNumber = 0,
TimeStamp_Server = 2023-02-08
...等等。
4条答案
按热度按时间zdwk9cvp1#
这是一个次要问题(社区wiki也是如此),但是您可以通过如下修改
WHERE
子句(假设TimeStamp_Server
是DateTime
列)* a显著**提高此查询的性能:这在三个方面有所帮助:
1.由于文化/国际化问题,将日期转换为字符串值比我们想象的要慢得多,而且更容易出错。坚持使用Date函数和类型总是会执行得更好,更准确。
1.通过将所有的修改都转移到
getdate()
,TimeStamp_Server
就不会被改变,我们就不需要对表中的每一行**进行转换。1.通过将所有修改转移到
getdate()
,TimeStamp_Server
就不会被修改,我们保留了对该列可能存在的任何索引的使用,这就触及了数据库性能的核心。sirbozc52#
使用一点JSON和
string_agg()
c9qzyr3d3#
一个最小的可复制的例子没有提供。所以,我是从臀部拍摄。
请尝试以下概念示例。
恕我直言,JSON或XML输出格式要可靠得多。
| 身份证|病例_日期|产品|结果|
| - ------|- ------|- ------|- ------|
| 五十五|2022年8月1日|十一|id = 55,病例日期= 2022年8月1日,产品= 11|
| 六十六|二〇二二年五月二十一日|五十一|id = 66,病例日期= 2022年5月21日,产品= 51|
lawou6xi4#
感谢你@Stu提供我在评论中寻求的东西:
所以你想在每一行上复制每一个列名吗?这将显著增加文件的大小!