sql - 使用 SQL Server XML 导入添加索引
问题描述
在 SQL Server 中,我尝试使用 XML 函数导入文件,如下所示:
SELECT
file.value('@registrationnumber[1]', 'nvarchar(100)') AS [registrationnumber],
report.value('@nihil[1]', 'nvarchar(100)') AS [nihil],
report.value('@period[1]', 'nvarchar(100)') AS [period],
report.value('@formulaid[1]', 'nvarchar(100)') AS [formulaid],
report.value('@frequention[1]', 'nvarchar(100)') AS [frequention],
report.value('@versieon[1]', 'nvarchar(100)') AS [version],
variant.value('@type[1]', 'nvarchar(100)') AS [varianttype],
variant.value('@value[1]', 'nvarchar(100)') AS [variantvalue],
post.value('@cube[1]', 'nvarchar(100)') AS [cube],
post.value('@row[1]', 'nvarchar(100)') AS [row],
post.value('@rownr[1]', 'nvarchar(100)') AS [rownr],
INTO
[#parsed]
FROM
@xmlData.nodes('file') AS a(file)
CROSS APPLY
file.nodes('report') AS b(report)
CROSS APPLY
report.nodes ('post') AS c(post)
OUTER APPLY
report.nodes ('variant') AS d(variant)
我想知道是否可以为每个加载的报告自动添加一个带有唯一索引的附加列。
我无法在谷歌上找到解决方案,因为我认为我使用了错误的搜索词。
解决方案
使用ROW_NUMBER():
SELECT
file.value('@registrationnumber[1]', 'nvarchar(100)') AS [registrationnumber],
report.value('@nihil[1]', 'nvarchar(100)') AS [nihil],
report.value('@period[1]', 'nvarchar(100)') AS [period],
report.value('@formulaid[1]', 'nvarchar(100)') AS [formulaid],
report.value('@frequention[1]', 'nvarchar(100)') AS [frequention],
report.value('@versieon[1]', 'nvarchar(100)') AS [version],
variant.value('@type[1]', 'nvarchar(100)') AS [varianttype],
variant.value('@value[1]', 'nvarchar(100)') AS [variantvalue],
post.value('@cube[1]', 'nvarchar(100)') AS [cube],
post.value('@row[1]', 'nvarchar(100)') AS [row],
post.value('@rownr[1]', 'nvarchar(100)') AS [rownr],
ROW_NUMBER() OVER (ORDER BY (SELECT 1)) YourSequentialIndex
INTO
[#parsed]
FROM
@xmlData.nodes('file') AS a(file)
CROSS APPLY
file.nodes('report') AS b(report)
CROSS APPLY
report.nodes ('post') AS c(post)
OUTER APPLY
report.nodes ('variant') AS d(variant)
推荐阅读
- node.js - MongoDb 地理定位
- c - fgets + stdin :是否可以跳过前 2 个字符?
- python-3.x - 如何将 POS 标签特征与相关词向量相结合,以从预训练的 gensim word2vec 中获取词,并在 keras 的嵌入层中使用
- mysql - mysql服务器每晚断线,请问如何解决?
- jquery - 如何在 Angular 1.x 链接函数中获取元素的其他事件处理程序
- mysql - GROUP_CONCAT 以多对多关系返回对象数组
- c++ - 给定一个大小为“n”的数组,在每个大小为“k”的窗口中找到最大元素并将它们全部相加,然后打印总和作为输出
- python - 将嵌套的 Python 字典写入 SQL 表
- android - exoplayer setPlayWhenReady() 为什么不工作?
- python-3.x - TF1 训练中使用的 Numpy 数组——Keras 在 TF2 中的准确率要低得多