SQL 选择 FOR XML 到 Solr 文档中
我正在尝试获取 SQL select 语句来生成符合 Solr 标准的 XML。
给定一个像这样的表:
id | name
---------
1 | one
2 | two
3 | three
我需要一个类似于(有或没有根节点)的结果:
<add>
<doc>
<field name="id">1</field>
<field name="name">one</field>
</doc>
<doc>
<field name="id">2</field>
<field name="name">two</field>
</doc>
<doc>
<field name="id">3</field>
<field name="name">three</field>
</doc>
</add>
是否可以使用 FOR XML
查询生成该结构,或者我需要 XSLT 或其他一些匹配该模式的机制?
I'm trying to get a SQL select statement to generate XML which conforms to the Solr standard.
Given a table like:
id | name
---------
1 | one
2 | two
3 | three
I need a result which is like (with or without the root node):
<add>
<doc>
<field name="id">1</field>
<field name="name">one</field>
</doc>
<doc>
<field name="id">2</field>
<field name="name">two</field>
</doc>
<doc>
<field name="id">3</field>
<field name="name">three</field>
</doc>
</add>
Is it possible to generate that structure using a FOR XML
query, or will I need an XSLT or some other mechanism to match that schema?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是使用构造函数的稍微不同的方法。
* 编辑:只是想到了另一种方法来做到这一点(但仍然需要提前了解列)*
同样,我不确定这两种方法对性能的影响。
* 更新 2:受 Aaron Bertrand 评论启发的动态但非性能方法 *
这是 Aaron 在评论中引用的帖子中描述的方法的概念证明。 (它在较大的数据集上表现非常糟糕)
Here's a slightly different way using constructors.
* EDIT: Just thought of another way to do this (but still requires knowledge of the columns ahead of time) *
Again, i'm uncertain of the performance implications of either approach.
* UPDATE 2: Dynamic yet non-performant method inspired by Aaron Bertrand's comments *
This was a proof of concept of the method described in the post Aaron referenced in his comments. (It performs horribly on larger datasets)
它可能不像您想要的那么“自然”,如果您事先不知道列名称,则必须动态构建它,但这似乎会产生您想要的文档:
这是一个动态的方法:
It's probably not as "natural" as you want, and if you don't know the column names in advance, you'd have to build it dynamically, but this seems to produce the doc you're after:
And here is a dynamic approach:
我假设您正在使用 .NET 进行编程,因为您使用的是 SQL Server。如果您考虑过使用 SolrNet 客户端将文档加载到 Solr 服务器中?
I am assuming that you are programming in .NET since you are using SQL Server. If you are have you considered using the SolrNet client to load documents into your Solr server?