主题:再次求教ASP将大量的文本数据导入到数据库中问题
各位大侠: 本人正在用ASP开发一个项目,需要将大量的文本数据导入到sql server 2000数据库中,数据内容如下: 600204040003天池有限公司百货大楼 60020201290225003755 2860 123,456.96 600204040003青岛百货大楼 60020201290225003755 2860 39,785.96 600204040003上海中天百货大楼 60020201290225003755 2860 1,000.96 数据之间没有分隔符,也就是所谓的定长数据,数据结构如下: 1、编号 12字节 左对齐 2、名称 32字节 左对齐 3、账号 20字节 左对齐 4、代码 7字节 右对齐 5、金额 15字节 右对齐 以上只是一种文本的结构,其他20多种文本与此的结构类似,只是数据项更多一些。 每种文本大约有几百行至几千行,有几种上万行。 请问: 1、我已经用c++写了一部分文本的导入工具,但是我还是想用asp来做导入工作,请问如何实现? 2、我不想使用sql server的数据导入导出工具,因为对业务人员来说,每次都要决定数据的起始位置太困难,而且金额中有千分符,导入一般都不会成功。 3、我准备用fso来读取文本文件,流程如下: 读一行 用mid()和midb()来取得每个数据项 写入数据库 读下一行 但是始终不能按照“西文一个字节,中文两个字节”这一方式得到我想要的数据项,请问需要做什么字符属性的设置吗? 4、金额中的千分符如何处理? 谢谢各位,请不吝赐教。 文本是所谓的定长数据,各个数据项之间没有分隔符。请您将数据放在记事本里看,不要折行。 问题点数:50、回复次数:51
回复:再次求教ASP将大量的文本数据导入到数据库中问题1
建议你用powerbuiler的数据库工具,它能够将整理好的文本直接导入数据库。
回复:再次求教ASP将大量的文本数据导入到数据库中问题2
不行呀,每天都要导入这些数据,我不想自己做,我要让业务人员来做。所以,我一定要用asp来实现,关键是mid()的用法有问题,与c++里的strcopy在中英文的处理上不一样。 我原来以为这是一个很简单的问题,现在看来并不简单。 难道这里也没有高手吗?
回复:再次求教ASP将大量的文本数据导入到数据库中问题3
有没有人会使用msdn.net?
回复:再次求教ASP将大量的文本数据导入到数据库中问题4
http://expert.csdn.net/Expert/topic/2415/2415802.xml?temp=.129574 可能是这个意思!对你或许有帮助
回复:再次求教ASP将大量的文本数据导入到数据库中问题5
你的格式里面,不足字节用什么来填充?空格吗?
回复:再次求教ASP将大量的文本数据导入到数据库中问题6
谢谢gaoqianjin(残荷),您提供的这篇文章所使用的方法我会,那里面每个数据项之间是以空格来分割的,而我的数据是定长数据,各个数据项之间没有分隔符。请您将数据放在记事本里看,不要折行。
回复:再次求教ASP将大量的文本数据导入到数据库中问题7
谢谢alexzhang00(三角猫(sjcatsoft)) ,而我的数据是定长数据,各个数据项之间没有分隔符。请您将数据放在记事本里看,不要折行。不足字节用空格来填充。例如: 12345abcde 中国天山 abcdef 12.25 78901rerwe 中国西双版纳 erwerr 1,234.56
回复:再次求教ASP将大量的文本数据导入到数据库中问题8
我在msdn找到下面的例子,开始时我很激动,以为我的问题可以解决了,但是后来发现,这个例子里面使用的StrConv函数不是一个vbscript函数,而是是个vba函数,所以我的问题依然没有解决。希望得到专家的指点。 Mid Function Example The first example uses the Mid function to return a specified number of characters from a string. Dim MyString, FirstWord, LastWord, MidWords MyString = "Mid Function Demo" ‘ Create text string. FirstWord = Mid(MyString, 1, 3) ‘ Returns "Mid". LastWord = Mid(MyString, 14, 4) ‘ Returns "Demo". MidWords = Mid(MyString, 5) ‘ Returns "Function Demo". The second example use MidB and a user-defined function (MidMbcs) to also return characters from string. The difference here is that the input string is ANSI and the length is in bytes. Function MidMbcs(ByVal str as String, start, length) MidMbcs = StrConv(MidB(StrConv(str, vbFromUnicode), start, length), vbUnicode) End Function Dim MyString MyString = "AbCdEfG" ‘ Where "A", "C", "E", and "G" are DBCS and "b", "d", ‘ and "f" are SBCS. MyNewString = Mid(MyString, 3, 4) ‘ Returns ""CdEf" MyNewString = MidB(MyString, 3, 4) ‘ Returns ""bC" MyNewString = MidMbcs(MyString, 3, 4) ‘ Returns "bCd"
回复:再次求教ASP将大量的文本数据导入到数据库中问题9
我只想到用空格来区分 的!顶!
回复:再次求教ASP将大量的文本数据导入到数据库中问题10
用excel试试
回复:再次求教ASP将大量的文本数据导入到数据库中问题11
谢谢cnmaya(allen) ,因为每天都有许多这样的文件需要导入,所以我一定要用一种很方便的方法来实现,所以我一定要用asp来做。
回复:再次求教ASP将大量的文本数据导入到数据库中问题12
问题比较简单了 <% Dim fso, txtFile, ID, name, account, code, amount, tmpLine Set fso = Server.CreateObject("Scripting.FileSystemObject") Set txtFile = fso.OpenTextFile("你的文件绝对路径") While not txtFile.AtEndofStream tmpLine = txtFile.ReadLine ID = Trim(Left(tmpLine,12)) name = Trim(Mid(tmpLine,13,32)) account = Trim(Mid(tmpLine,45,20)) code = Trim(Mid(tmpLine,65,7)) amount = Trim(Right(tmpLine,15)) Response.write "ID=" & ID response.write "<br>" response.write "name=" & name response.write "<br>" response.write "account=" & account response.write "<br>" response.write "code=" & code response.write "<br>" response.write "amount=" & amount response.write "-------------------------------------" wend set txtFile = nothing set fso = nothing %>
回复:再次求教ASP将大量的文本数据导入到数据库中问题13
up
回复:再次求教ASP将大量的文本数据导入到数据库中问题14
是的,像这种情况,我以前用Excel处理后,再用DTS导入sql server库中
回复:再次求教ASP将大量的文本数据导入到数据库中问题15
非常感谢alexzhang00(三角猫(sjcatsoft))再次回复本帖,但是问题不是您想像的那么简单,如果文本数据都是单字节的字符,那么您的程序确实可以解决这个问题,可是实际情况是里面包含有双字节数据,而且不够长度的部分用单字节空格来补全了,所以问题复杂了。您的程序一定没有实际运行过,您只要将我提供的文本数据用您的程序处理一下,您就会发现问题的所在。再次感谢您的回复。
回复:再次求教ASP将大量的文本数据导入到数据库中问题16
请问如何让本帖能出现在论坛的前列,好让更多的人看到。
回复:再次求教ASP将大量的文本数据导入到数据库中问题17
谢谢wsqsoft(Qing)参与,但是我们是程序员,我们写的程序是让别人来用的,而且使用者往往对计算机或者某些工具并不熟悉,我们不能要求他们按照我们设定的方法去工作,尤其是要他们去判断应该在哪里拆分数据,如果数据导入错了,我们是要承担相应的责任的。其实我用c++已经写了一些导入程序,只是觉得这样做有一点麻烦,而且集成度不高。所以很想用asp来实现,也就发现了我现在遇到的这个问题,现在我觉得这个问题越来越有意思了,我一定要找到问题的答案。
回复:再次求教ASP将大量的文本数据导入到数据库中问题18
帮你顶一下!
回复:再次求教ASP将大量的文本数据导入到数据库中问题19
不好意思,顺便问一句,如何定义一个文本文件的数据结构,(这应该不是数据库表的结构吧?): 如您所定义的数据结构如下: 1、编号 12字节 左对齐 2、名称 32字节 左对齐 3、账号 20字节 左对齐 4、代码 7字节 右对齐 5、金额 15字节 右对齐
回复:再次求教ASP将大量的文本数据导入到数据库中问题20
关注……
回复:再次求教ASP将大量的文本数据导入到数据库中问题21
回复gaoqianjin(残荷),您理解错了,我没有定义文本的数据结构,我的文本数据就是这样的,我只是对文本的结构进行了描述而已。
回复:再次求教ASP将大量的文本数据导入到数据库中问题22
谢谢所有关注这个问题的专家和朋友。
回复:再次求教ASP将大量的文本数据导入到数据库中问题23
我觉得如果字段都定长的话,就可以直接使用mid 分析每行的数据,如果不定长但是有空格的话也可以使用 instr 实现读取位置,最后分析文件使用:fso
回复:再次求教ASP将大量的文本数据导入到数据库中问题24
回复xieyj(Free Fish),您只有试一下才知道行不行,明天我帖一个测试程序,请大家测试。
回复:再次求教ASP将大量的文本数据导入到数据库中问题25
等待中……
回复:再次求教ASP将大量的文本数据导入到数据库中问题26
等待中...... 请教问题,将文本文件作为后台数据库,用ASP读入网页,如何实现。文本中用|为分格符
回复:再次求教ASP将大量的文本数据导入到数据库中问题27
顶!
回复:再次求教ASP将大量的文本数据导入到数据库中问题28
<% dim fso,txtfile,ziduan set fso=server.createobject("scripting.filesystemobject") set txtfile=fso.opentextfiel("文本绝对路径") while not txtfile.atendofstream tmpline = txtfile.readline ziduan=split(tmplind,"|") for i =0 to ubound(ziduan) response.write ziduan(i) next wend set txtfile= nothing set fso = nothing %> 执行完毕无任何结果输出 ,请改错,谢谢
回复:再次求教ASP将大量的文本数据导入到数据库中问题29
这是一个测试程序,用于说明我的问题,欢迎大家测试。 <HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft FrontPage 4.0"> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </HEAD> <body bgcolor="#99bbc3"> <P> <% Dim strOutput strOutput1="1234567890abcdefg中国公司 abcdef 139,123.45" strOutput2="1234567890abcdefg中国 abcdef 139,123.45" Response.Write "第一行数据" & "<br>" str1=mid(strOutput1,1,10) str2=mid(strOutput1,11,7) str3=mid(strOutput1,18,20) str4=mid(strOutput1,38,6) str5=mid(strOutput1,44,16) Response.Write str1 & "<br>" Response.Write str2 & "<br>" Response.Write str3 & "<br>" Response.Write str4 & "<br>" Response.Write str5 & "<br>" Response.Write "第二行数据" & "<br>" str1=mid(strOutput2,1,10) str2=mid(strOutput2,11,7) str3=mid(strOutput2,18,20) str4=mid(strOutput2,38,6) str5=mid(strOutput2,44,16) Response.Write str1 & "<br>" Response.Write str2 & "<br>" Response.Write str3 & "<br>" Response.Write str4 & "<br>" Response.Write str5 & "<br>" %> </body> </html> 下面是程序的输出结果 第一行数据 1234567890 abcdefg 中国公司 abcd ef 139,123.45 第二行数据 1234567890 abcdefg 中国 ab cdef 139,123.45 这个结果不是我想要,我要的结果是 1234567890 abcdefg 中国公司 abcdef 139,123.45 1234567890 abcdefg 中国 abcdef 139,123.45 看看谁可以解决这个问题。
回复:再次求教ASP将大量的文本数据导入到数据库中问题30
看看下边的代码能帮你吗 <HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft FrontPage 4.0"> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </HEAD> <body bgcolor="#99bbc3"> <P> <% Dim strOutput strOutput1="1234567890abcdefg中国公司 abcdef 139,123.45" strOutput2="1234567890abcdefg中国 abcdef 139,123.45" Response.Write "第一行数据" & "<br/>" str1=mid(strOutput1,1,10) str2=mid(strOutput1,11,7) str3=trim(mid(strOutput1,18,16)) str4=trim(mid(strOutput1,34,8)) str5=trim(mid(strOutput1,44,16)) Response.Write str1 & "<br/>" Response.Write str2 & "<br/>" Response.Write str3 & "<br/>" Response.Write str4 & "<br/>" for i =0 to len(str4) response.write(" ") next Response.Write str5 & "<br/>" Response.Write "第二行数据" & "<br/>" str1=mid(strOutput2,1,10) str2=mid(strOutput2,11,7) str3=trim(mid(strOutput2,18,16)) str4=trim(mid(strOutput2,34,8)) str5=trim(mid(strOutput2,44,16)) Response.Write str1 & "<br/>" Response.Write str2 & "<br/>" Response.Write str3 & "<br/>" Response.Write str4 & "<br/>" for i =0 to len(str4) response.write(" ") next Response.Write str5 & "<br/>" %> </body> </html>
回复:再次求教ASP将大量的文本数据导入到数据库中问题31
学习!
回复:再次求教ASP将大量的文本数据导入到数据库中问题32
谢谢coltest(coltest)提供代码,由于我的例子不够恰当,误导您了,请看下面的例子: <HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft FrontPage 4.0"> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </HEAD> <body bgcolor="#99bbc3"> <P> <% Dim strOutput strOutput1="1234567890abcdefg中国公司CS中心 abcdef 123.45" strOutput2="1234567890abcdefg中国总公司 abcdef 9,123.45" strOutput3="1234567890abcdefgABC company limited abcdef 52,339,123.45" Response.Write "第一行数据" & "<br>" str1=trim(mid(strOutput1,1,10)) str2=trim(mid(strOutput1,11,7)) str3=trim(mid(strOutput1,18,20)) str4=trim(mid(strOutput1,38,6)) str5=trim(mid(strOutput1,44,16)) Response.Write str1 & "<br>" Response.Write str2 & "<br>" Response.Write str3 & "<br>" Response.Write str4 & "<br>" Response.Write str5 & "<br>" Response.Write "第二行数据" & "<br>" str1=trim(mid(strOutput2,1,10)) str2=trim(mid(strOutput2,11,7)) str3=trim(mid(strOutput2,18,20)) str4=trim(mid(strOutput2,38,6)) str5=trim(mid(strOutput2,44,16)) Response.Write str1 & "<br>" Response.Write str2 & "<br>" Response.Write str3 & "<br>" Response.Write str4 & "<br>" Response.Write str5 & "<br>" Response.Write "第三行数据" & "<br>" str1=trim(mid(strOutput2,1,10)) str2=trim(mid(strOutput2,11,7)) str3=trim(mid(strOutput2,18,20)) str4=trim(mid(strOutput2,38,6)) str5=trim(mid(strOutput2,44,16)) Response.Write str1 & "<br>" Response.Write str2 & "<br>" Response.Write str3 & "<br>" Response.Write str4 & "<br>" Response.Write str5 & "<br>" %> </body> </html> 下面是程序的输出结果 第一行数据 1234567890 abcdefg 中国公司CS中心 abcdef 123.45 第二行数据 1234567890 abcdefg 中国总公司 abcde f 9,123.45 第三行数据 1234567890 abcdefg 中国总公司 abcde f 9,123.45 这个结果不是我想要,我要的结果是: 1234567890 abcdefg 中国公司CS中心 abcdef 123.45 1234567890 abcdefg 中国总公司 abcdef 9,123.45 1234567890 abcdefg ABC company limited abcdef 52,339,123.45 需要说明的是,这些字符串是来自文本的,并不是只有三个。
回复:再次求教ASP将大量的文本数据导入到数据库中问题33
up
回复:再次求教ASP将大量的文本数据导入到数据库中问题34
用php可能会容易一些,我在别的论坛里边看到了一个类似的东西,那个能很好的解决文本到数据库的转换,要不要贴上来?
回复:再次求教ASP将大量的文本数据导入到数据库中问题35
我看的那个主要都是用的正则表达式
回复:再次求教ASP将大量的文本数据导入到数据库中问题36
如果你的系统是中文的,而不足的字节确实是用空格补的,那么我的方法没有错误,因为中文系统中,实际没有双字节的概念
回复:再次求教ASP将大量的文本数据导入到数据库中问题37
这样吧,alexzhang00(三角猫(sjcatsoft)),请您修改并运行我今天贴的例子程序,然后把结果贴上来,好吗?谢谢您的帮助。
回复:再次求教ASP将大量的文本数据导入到数据库中问题38
如果用ASP实在没有办法解决的话,我准备用ASP.net了,然后套用这个方法: Function MidMbcs(ByVal str as String, start, length) MidMbcs = StrConv(MidB(StrConv(str, vbFromUnicode), start, length), vbUnicode) End Function Dim MyString MyString = "AbCdEfG" ‘ Where "A", "C", "E", and "G" are DBCS and "b", "d", ‘ and "f" are SBCS. MyNewString = Mid(MyString, 3, 4) ‘ Returns ""CdEf" MyNewString = MidB(MyString, 3, 4) ‘ Returns ""bC" MyNewString = MidMbcs(MyString, 3, 4) ‘ Returns "bCd"
回复:再次求教ASP将大量的文本数据导入到数据库中问题39
双字节和单字节的使用可真是麻烦
回复:再次求教ASP将大量的文本数据导入到数据库中问题40
试试运行下面的代码,是否是你想要的结果? <HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft FrontPage 4.0"> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </HEAD> <body bgcolor="#99bbc3"> <P> <% Dim strOutput(3), i, iDiff strOutput(0)="1234567890abcdefg中国公司CS中心 abcdef 123.45" strOutput(1)="1234567890abcdefg中国总公司 abcdef 9,123.45" strOutput(2)="1234567890abcdefgABC company limited abcdef 52,339,123.45" For i = 0 TO 2 Response.Write "第" & i + 1 & "行数据" & "<br>" str1=Cutstr(strOutput(i),1,10) str2=Cutstr(strOutput(i),11,7) str3=Cutstr(strOutput(i),18,20) iDiff = 20 - len(str3) str4=Cutstr(strOutput(i),38 - iDiff,6) str5=Cutstr(strOutput(i),44 - iDiff,16) Response.Write str1 & "<br>" Response.Write str2 & "<br>" Response.Write str3 & "<br>" Response.Write str4 & "<br>" Response.Write str5 & "<br>" Next REM ########################################### REM 截取字符Cutstr(str,start,num) REM 参数列表: REM str: 需截取的字符 REM start: 开始位置 REM num: 截取数量 REM ########################################### Function Cutstr(str, start, num) Dim k, j, a k = 0 Cutstr = "" for j = start to len(trim(str)) a = mid(str,j,1) if asc(a) < 0 then k = k + 2 else k = k + 1 end if Cutstr = Cutstr & a If k = num Then Exit Function End If Next Cutstr = str End Function %> </body> </html>
回复:再次求教ASP将大量的文本数据导入到数据库中问题41
谢谢suncicy(suncicy),您的结果令人满意,您提供的方法也是到目前位置最让我满意的。 不过,我觉得还有一点欠缺,比如这几句: iDiff = 20 - len(str3) str4=Cutstr(strOutput(i),38 - iDiff,6) str5=Cutstr(strOutput(i),44 - iDiff,16) 如果要处理的数据项比较多时,同时双字节数据项也比较多时,甚至每一个数据项都要这样处理才行,那么程序将非常容易写错,而且不太好找,您说呢? 还是要感谢您,如果10天之内没有比这个方法更令我满意的了,所有的分都给您。 再次谢谢您!
回复:再次求教ASP将大量的文本数据导入到数据库中问题42
up
回复:再次求教ASP将大量的文本数据导入到数据库中问题43
重写mid函数~~ 好方法~
回复:再次求教ASP将大量的文本数据导入到数据库中问题44
可不可以写一个函数,类似mid的用法,可以按单字节方式来处理双字节。
回复:再次求教ASP将大量的文本数据导入到数据库中问题45
zwonline99(zwonline)提的意见很对,当双字节数据比较多时容易写错。 我稍微修改了程序,这样就不用去考虑该数据是否是双字节问题了,你测试看看。 <HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft FrontPage 4.0"> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </HEAD> <body bgcolor="#99bbc3"> <P> <% Dim strOutput(3), i, iDiff strOutput(0)="1234567890abcdefg中国公司CS中心 abcdef 123.45" strOutput(1)="1234567890abcdefg中国总公司 abcdef 9,123.45" strOutput(2)="1234567890abcdefgABC company limited abcdef 52,339,123.45" For i = 0 TO 2 Response.Write "第" & i + 1 & "行数据" & "<br>" str1=Cutstr(strOutput(i),1,10) str2=Cutstr(strOutput(i),11,7) str3=Cutstr(strOutput(i),18,20) str4=Cutstr(strOutput(i),38 ,6) str5=Cutstr(strOutput(i),44,16) Response.Write str1 & "<br>" Response.Write str2 & "<br>" Response.Write str3 & "<br>" Response.Write str4 & "<br>" Response.Write str5 & "<br>" Next REM ########################################### REM 截取字符Cutstr(str,start,num) REM 参数列表: REM str: 需截取的字符 REM start: 开始位置 REM num: 截取数量 REM ########################################### Function Cutstr(str, start, num) Dim k, j, a, m, iFlag k = 0 m = 0 iFlag = 0 Cutstr = "" For j = 1 TO start - 1 a = mid(str,j,1) if asc(a) < 0 then m = m + 2 iFlag = 1 else m = m + 1 end if Next If iFlag = 0 Then m = start Else ‘对有双字节情况进行特殊处理 m = start - (m - (start - 1)) End If For j = m To len(trim(str)) a = mid(str,j,1) if asc(a) < 0 then k = k + 2 else k = k + 1 end if Cutstr = Cutstr & a If k >= num Then Exit Function End If Next End Function %> </body> </html>
回复:再次求教ASP将大量的文本数据导入到数据库中问题46
谢谢suncicy(suncicy),您的程序我已经运行过了,表面上看很不错,但是我将数据又改动了一下,问题就出来了,您再测试一下这个程序。谢谢您的大力帮助,您可真是一位热心人。 <HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft FrontPage 4.0"> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </HEAD> <body bgcolor="#99bbc3"> <P> <% Dim strOutput(3), i, iDiff strOutput(0)="1234567890abcdefg中国公司CS中心 abcdef 123.45中国公司CS中心 abcdef 123.45" strOutput(1)="1234567890abcdefg中国总公司总公司 abcdef 1,235,123.45中国总公司总公司 abcdef 1,235,123.45" strOutput(2)="1234567890abcdefgABC company limited abcdef 52,339,123.45ABC company limited abcdef 52,339,123.45" For i = 0 TO 2 Response.Write "第" & i + 1 & "行数据" & "<br>" str1=Cutstr(strOutput(i),1,10) str2=Cutstr(strOutput(i),11,7) str3=Cutstr(strOutput(i),18,20) str4=Cutstr(strOutput(i),38 ,6) str5=Cutstr(strOutput(i),44,16) str6=Cutstr(strOutput(i),60,20) str7=Cutstr(strOutput(i),80,6) str8=Cutstr(strOutput(i),86,16) Response.Write str1 & "<br>" Response.Write str2 & "<br>" Response.Write str3 & "<br>" Response.Write str4 & "<br>" Response.Write str5 & "<br>" Response.Write str6 & "<br>" Response.Write str7 & "<br>" Response.Write str8 & "<br>" Next REM ########################################### REM 截取字符Cutstr(str,start,num) REM 参数列表: REM str: 需截取的字符 REM start: 开始位置 REM num: 截取数量 REM ########################################### Function Cutstr(str, start, num) Dim k, j, a, m, iFlag k = 0 m = 0 iFlag = 0 Cutstr = "" For j = 1 TO start - 1 a = mid(str,j,1) if asc(a) < 0 then m = m + 2 iFlag = 1 else m = m + 1 end if Next If iFlag = 0 Then m = start Else ‘对有双字节情况进行特殊处理 m = start - (m - (start - 1)) End If For j = m To len(trim(str)) a = mid(str,j,1) if asc(a) < 0 then k = k + 2 else k = k + 1 end if Cutstr = Cutstr & a If k >= num Then Exit Function End If Next End Function %> </body> </html>
回复:再次求教ASP将大量的文本数据导入到数据库中问题47
不好意思,没有考虑其他情况,差点误导楼主:) 还是按照第一次的思路修改了程序,估计不会再有错误。但还存在一个缺陷: 不能单独运行其中一个语句,如:str6=Cutstr(strOutput(i),60,20)。 必须运行其前面的,特别是带有双字节的语句才能保证不出错。 不知楼主及各位大侠还有没更好的方法? <HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft FrontPage 4.0"> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </HEAD> <body bgcolor="#99bbc3"> <P> <% Dim strOutput(3), i, m strOutput(0)="1234567890abcdefg中国公司CS中心 abcdef 123.45中国公司Cb中心 abcdef 123.45" strOutput(1)="1234567890abcdefg中国总公司总公司 abcdef 1,235,123.45中国总公司总公司 abcdef 1,235,123.45" strOutput(2)="1234567890abcdefgABC company limited abcdef 52,339,123.45ABC company limited abcdef 52,339,123.45" For i = 0 TO 2 Response.Write "第" & i + 1 & "行数据" & "<br>" m = 0 str1=Cutstr(strOutput(i),1,10) str2=Cutstr(strOutput(i),11,7) str3=Cutstr(strOutput(i),18,20) str4=Cutstr(strOutput(i),38 ,6) str5=Cutstr(strOutput(i),44,16) str6=Cutstr(strOutput(i),60,20) str7=Cutstr(strOutput(i),80,6) str8=Cutstr(strOutput(i),86,16) Response.Write str1 & "<br>" Response.Write str2 & "<br>" Response.Write str3 & "<br>" Response.Write str4 & "<br>" Response.Write str5 & "<br>" Response.Write str6 & "<br>" Response.Write str7 & "<br>" Response.Write str8 & "<br>" Next REM ########################################### REM 截取字符Cutstr(str,start,num) REM 参数列表: REM str: 需截取的字符 REM start: 开始位置 REM num: 截取数量 REM ########################################### Function Cutstr(str, start, num) Dim k, j, a, iFlag k = 0 iFlag = 0 Cutstr = "" For j = start - m To len(trim(str)) a = mid(str,j,1) if asc(a) < 0 then k = k + 2 iFlag = 1 else k = k + 1 end if Cutstr = Cutstr & a If k >= num Then If iFlag = 1 Then m = m + (num - len(Cutstr)) End If Exit Function End If Next End Function %> </body> </html>
回复:再次求教ASP将大量的文本数据导入到数据库中问题48
suncicy(suncicy) ,好极了,您的程序我还要测试一下。
回复:再次求教ASP将大量的文本数据导入到数据库中问题49
先导入access,然后再吧*.mdb导入sql
回复:再次求教ASP将大量的文本数据导入到数据库中问题50
回复iamdan(egg天下),您的方法太复杂,如果让您每天导入20个不同格式的文本,您愿意吗?反正我们这里的业务人员不愿意。
回复:再次求教ASP将大量的文本数据导入到数据库中问题51
再次感谢suncicy(suncicy)!!!
|