将大量HTML数据传递到SQL数据库

时间:2014-07-03 03:41:54

标签: html sql

所以...我有一个HTML文件,其中包含一个包含约2k人数据的表。这些数据包括(但不限于)地址,电子邮件,电话,银行账户等。

我需要将所有这些数据都放到MySQL数据库中。到目前为止,我的尝试是:

1)将其全部放在 form 标记内,并尝试(jquery-)序列化它。 太大

2)在HTML结构中找到一个模式,以便我可以:

a)编写千个的SQL插入查询 或

b)在服务器端程序中接收它。

没有找到模式

3)只需访问包含数据库即可。不。所有数据都在这里。数据库消失了。消失了。

该文件大约46MB,共包含1,086,177行。这些中有空行。因此,只需尝试在Notepad ++中打开文件大约需要5秒钟,在Chrome中运行它会占用大约400MB RAM,甚至VIM也需要一段时间来运行它。

实际上,它并不那么困难。我的意思是,有一个

<table align="center" width="100%">
   <tbody>

在它之上...问题是所有数据,独立于什么或者是谁,仅由无穷无尽的行分隔,例如

 <tr>
  <td nowrap="" align="right" valign="baseline"> 
    <div align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><font color="#FF0000">*</font> 
      Email:</font></div>
  </td>
  <td nowrap="" align="left" valign="baseline"><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#0000CC"><b> 
    <font color="#990000">email</font></b></font> </td>
  <td nowrap="" align="right" valign="baseline"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"> 
    __Password__: </font></td>
  <td nowrap="" align="right" valign="baseline"> 
    <div align="left"> 
      **** 
    </div>
  </td>
  </tr>

任何,任何任何的想法都是非常受欢迎的。

编辑:为了让事情更清楚:我需要找到一个模式。 VIM / Notepad ++查找/替换表达式来创建某些东西我可以扔进MySQL数据库以某种方式 - 包括SQL脚本,后查询字符串等。

1 个答案:

答案 0 :(得分:0)

事实证明,你可以简化事情。首先,在一些更好的文本编辑器(如Notepad++)中打开它,并用空字符串替换制表符,连续空格和换行符。这应该会减少文件的大小。

然后在浏览器中打开它,并在控制台中运行此代码段:

var cells = document.getElementsByTagName('td')
for (i = 0; i < cells.length; i++) {
    cells[i].innerHTML = cells[i].innerText
}

我用你提供的HTML运行它,结果DOM(通过document.body.innerHTML获得)是这样的:

<table align="center" width="100%">
   <tbody>
  <tr>
  <td nowrap="" align="right" valign="baseline">* Email:
</td>
  <td nowrap="" align="left" valign="baseline">email</td>
  <td nowrap="" align="right" valign="baseline">__Password__:</td>
  <td nowrap="" align="right" valign="baseline">****</td>
  </tr>
  </tbody>
</table>

如您所见,不必要的<font><div>标签不再存在。现在,如果您忽略这些属性,那么您将拥有一个包含模式的单元格的表:

<td>name</td>
<td>value</td>
<td>name</td>
<td>value</td>

[编辑开始]

好的,这是另一个进一步简化事情的脚本:

var cells = document.getElementsByTagName('td');
for (i = 0; i < cells.length; i++) {
    cells[i].outerHTML = '<td>' + cells[i].innerHTML + '</td>';
}

这将DOM简化为以下内容:

<table align="center" width="100%">
   <tbody>
  <tr>
  <td>* Email:
</td>
  <td>email</td>
  <td>__Password__:</td>
  <td>****</td>
  </tr>
  </tbody>
</table>

[编辑结束]

所以这些是名称值对。

您可以使用此处提供的代码段将HTML复制到剪贴板:How do I copy to the clipboard in JavaScript?

复制后,您可以将其保存到文件中。如果这也无法用于数据提取,您可以以这种方式一次一个地使用简单脚本继续简化文档。