本函数代码中包含了详细的关于操作细节的注释,因此我们仅仅粗略的介绍一下各个对象是如何工作的。在进入函数之前,我们必须为Web服务器设置server.scripttimeout属性。这个属性告知Web服务器经过多久(以秒为单位)后放弃运行的脚本。
这个值需要根据导入数据量的多少进行相应的调整。好了,完成这些琐碎的管理工作之后,我们可以开始研究真正的函数了。
函数做的第一件事是打开包含着目标数据库表的描述信息的描述文件。用该文件中的信息建立一个数组,来存放我们所需了解的数据库表的所有信息。
完成这一步后,所建立的数组中有表中各个域的名称、类型和长度。然后,打开错误日志文件,令其准备就绪接受我们生成的一切错误信息。现在可以打开定界符文件,然后开始将数据从其中"拽"出了。文件一旦打开,就从中读取记录并将记录一次一个域地进行分解。同时,我们检验每个域中的数据,查看它们是否符合描述文件中的标准设置。
如果描述文件将一个域标志为n(数字型),我们就使用isNumeric()函数来查看读取的值是否真的是一个数字。如果是的话,将该值插入到SQL语言的Insert语句中。否则,输出一条错误信息并且将插入到SQL语言Insert语句中的值改为NULL(这是很重要的一点:即使一个或者多个域中含有错误的数据,我们仍然可以试图添加这条记录!仅仅需要在添加前将坏数据除去就可以了。)
当所有的域都经过处理之后,我们利用刚才创建好的SQL Insert语句将数据加入到目标表中。如果这一过程中出现了错误,将错误记录到错误日志中。
到此为止,处理一条记录的工作就完成了。接着处理下一条。当源文件空了之后,打印一些信息,然后向函数的调用者返回插入的记录数。