




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
导入带有分界符的文本文件ASP是被打算用于创建HTML文档的,但是对于许多其它的编程问题,它也是一种唾手可得的解决工具。比如像把含有定界符的文本文件导入到SQL Sever 6.5的表中这样的工作。虽然SQL Sever包括了一个这样的工具(批量拷贝或者bcp实用工具),但是它至少有一个主要的缺陷:把您要导入的数据想得太完美无缺了。因此,如果在定界符文件中应该写着数字的地方写上了字符串,bcp实用工具就会崩溃。这种情况下,一个对于健壮性的改进方案是使用Access作为向SQL Sever导入数据的前端。这是个好的做法,但是Access也对包含错误数据的域也非常的挑剔。最终,一切都表明一个用户定制编写的程序才是最好的解决方案。要解决这类问题,ASP是一个很好的选择,它几乎拥有Visual Basic的全部功能,并且能够更容易的让程序立即运行起来。因为在这种工作中,并不需要一个用户界面,我们需要的仅仅是导入一些数据并且如果有错误的话,可以得到关于错误的报告。设想不幸的是,使用ASP将带有定界符的文本文件变成数据库表并不想所期望的那样简单。不管怎么说,ASP并非一个数据库工具,所以我们需要在实际导入数据前进行一些设置工作。特别要注意的是,我们需要使用某种方法将导入数据的目标表的信息告诉ASP代码。至少要了解表中域的个数、名称、它们的类型(比如字符型、数字型、日期形等等) 以及每个域中最多可以包含的数据(如果是一个字符型的域)。使用一个简单的文本文件来描述目标数据库表是一个好的解决办法。表A列出了这样一个例子。表A: 一个简单的数据库表描述文件3name, c, 50age, n, 0birthday, d, 0文件的首行告诉我们该表有多少个域(在此例中是三个)。剩下的三行分别描述了表中每一个域的特征。每一行都含有域的名称、类型(n=数字型、c=字符型、d=日期型)以及域可以包含的字符个数。(注意最后一项信息只对字符域有意义。) 需要特别注意的是,这些域的排列顺序必须与它们在含有定界符的文本文件中的顺序相同!好,从表A中我们可以看出这个表有三个域: name:一个可以容纳50个字符的字符型域 age:一个数字型域 birthday:一个日期型域 在表B中,我们看到的是一个用tab作为定界符的简单的文本文件。它含有几个总统的姓名、他们就职时的年龄以及他们的生日。(注意这个文件中域的顺序与表A所示的文件是相同的。你还可以注意到第二条记录的age域含有一个非数字的值。)表B: 一个非常简单的用tab字符定界的文件Jimmy Carter5210/01/1924Ronald Reagansixty-nine02/06/1911George Bush6406/12/1924如表B所示,大多数文件都使用tab作为定界符。不过,定界符也可以是任意字符。因此,最好的解决方案应该能够处理任何定界符。解决方案表C出了这个问题的一种可能的解决方案。这是一个Visual Basic函数,它能够读取带有定界符的文本文件并且将数据加入到指定的数据库表中。为了尽可能灵活,该函数带有几个不同的参数: dbName-指明目标表所在的数据库名称。(如果用户使用的数据库系统不使用数据库名,只需要传给这个参数一个空字符串。) tableName-指定目标表的名称。 sourceText-存有待导入的数据的定界符文本文件,如表B所示。 descriptors-含有目标数据库表的描述信息的文件的名称。 errorLog-记录错误信息的文件的名称。 tCon-一个起关联作用的对象,将dbName参数中的数据库名称和tableName参数中设置的表名称联系起来。 原理本函数代码中包含了详细的关于操作细节的注释,因此我们仅仅粗略的介绍一下各个对象是如何工作的。在进入函数之前,我们必须为Web服务器设置server.scripttimeout属性。这个属性告知Web服务器经过多久(以秒为单位)后放弃运行的脚本。这个值需要根据导入数据量的多少进行相应的调整。好了,完成这些琐碎的管理工作之后,我们可以开始研究真正的函数了。函数做的第一件事是打开包含着目标数据库表的描述信息的描述文件。用该文件中的信息建立一个数组,来存放我们所需了解的数据库表的所有信息。完成这一步后,所建立的数组中有表中各个域的名称、类型和长度。然后,打开错误日志文件,令其准备就绪接受我们生成的一切错误信息。现在可以打开定界符文件,然后开始将数据从其中拽出了。文件一旦打开,就从中读取记录并将记录一次一个域地进行分解。同时,我们检验每个域中的数据,查看它们是否符合描述文件中的标准设置。如果描述文件将一个域标志为n(数字型),我们就使用isNumeric()函数来查看读取的值是否真的是一个数字。如果是的话,将该值插入到SQL语言的Insert语句中。否则,输出一条错误信息并且将插入到SQL语言Insert语句中的值改为NULL(这是很重要的一点:即使一个或者多个域中含有错误的数据,我们仍然可以试图添加这条记录!仅仅需要在添加前将坏数据除去就可以了。)当所有的域都经过处理之后,我们利用刚才创建好的SQL Insert语句将数据加入到目标表中。如果这一过程中出现了错误,将错误记录到错误日志中。到此为止,处理一条记录的工作就完成了。接着处理下一条。当源文件空了之后,打印一些信息,然后向函数的调用者返回插入的记录数。尾声当然,上面的技术不光可以仅仅用来存取数据库表而已。比如,可以很简单的将这个函数中生成SQL语言Insert语句的部分改为生成HTML表格的一行。(这是一个将不完备的带定界
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年地方志编纂与管理考试相关知识试卷及答案
- 2025年中国冷冻储物袋行业市场全景分析及前景机遇研判报告
- 市政管道进场安全教育
- 员工入场安全培训
- 中医护理相关知识
- 教育劳动的德性价值阐释
- 高考历史热点难点押题预测 经济与社会生活(含解析)
- 幼儿园小班数学《帮帮小猪》教案
- 幼儿园小班美术版画教案龙卷风
- java面试题及答案kafka篇
- 地下工程暗挖隧道施工质量控制培训课件
- 数学广角-推理测试题
- 2024年瞩目世界大事件
- 桥梁吊装专项安全施工方案
- 2023年攀枝花市米易县社区工作者招聘考试真题
- 敬老院工作经验交流发言稿
- 医师多点执业备案表-申请表-协议书-情况登记表
- 工程测量员四级理论知识考试试题题库及答案
- 新员工入职健康体检表
- 北师大版一年级数学下册期末试卷(含答案)
- 国开作业《建筑测量》学习过程(含课程实验)表现-参考(含答案)33
评论
0/150
提交评论