SQL将HTML表解析为数据列

时间:2018-01-19 12:40:50

标签: sql parsing

我需要以下列格式解析包含一些文本和HTML表的列(此奇迹的5百万行):

<div>Some smart text with number 148974751</div>
<div>
<table border="1" > 
<th>Header col 1</th> 
<th>Header col 2</th> 
<th>Header col 3</th> 
<tr> 
<td>ParName 1</td>
<td>Date Value</td>
<td>Date Value
</td>
</tr> 
<tr> 
<td>ParName 2</td>
<td>Int value</td>
<td>Ubt value</td>
</tr> 
<tr> 
<td>ParName 3</td>
<td>String value</td>
<td>String value
</td>
</tr> 
</table>
</div>

所以总有3列,第一列<td>总是包含字符串,第二列和第三列包含valude(date,datetime,int,numeric,string)。每个已处理的数据库行中有1到大约8 <tr>行 我搜索了论坛,并且从零碎的角度有一些想法,最好的方法是创建一个函数来一次处理一行。
该函数可能会将HTML代码转换为XML,然后在行和单元格上处理简单的逻辑。

首先,我想我应该将HTML转换为XML:

SELECT CAST(htmlCell as xml) as XMLcode INTO #TMP FROM SrcTable;

这似乎有效。然后获取单元格值(仅作为字符串启动,没有必要解析Int / numeric / bit / ...值):

SELECT xmlCode.value('(*/td)[1]', 'nvarchar(max)') FROM #TMP

这不起作用,我已经迷路了。我需要从<td>单元格中检索内容,包括列索引。

最后,我会按照这些方针做点什么:

INSERT INTO TargetTable (ParamName, StringValue) SELECT ParamName, StringValue FROM #TMP;

0 个答案:

没有答案
相关问题