CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

关于截取文本文件字段到数据库中

楼主antyell(草田先生)2005-07-24 09:10:14 在 VB / 基础类 提问

有文本文件中有如下内容,大约有两千多行:  
  YTG鹰     潭-WOH芜湖东   19   17:32/17:32               25032C   56   1256         0(       0)1256     67.2   57WOH    
  XBK徐州北-FEH阜阳北   20   15:57/16:00               28007C   51   1159   2971(       0)4130     64.2   52FEH  
  JEK济南西-NJH南     京   19   12:45/12:09               21057C   62   1405   3530(       0)4935     78.5   63NSK  
   
  请问如何把他们读入access数据库中,我想用先逐行读入,再用mid函数截取,可在读第二个字段是遇到困难,鹰潭中的空格是两个半角空格,截取时始mid(str,4,4),可到第二行时徐州北又用mid(str,4,3).字段截取时定位产生困难 问题点数:60、回复次数:12Top

1 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2005-07-24 09:29:07 得分 0

楼主的截取规则是什么?就是说最后你需要截取的是哪部分?Top

2 楼Athoncj(阿龙)回复于 2005-07-24 10:35:17 得分 0

'YTG鹰     潭-WOH芜湖东'     'JEK济南西-NJH南     京'  
  这字符串如果导出前是Char(?)或Nchar(?)类型的就好办了,它是固定长度的;Varchar,Nvarchar就难办了.  
  或者用Replace("YTG鹰     潭-WOH芜湖东","     ","",1)替换掉两个半角空格,使其成为标准字符串  
  如果遇到一个半角空格,退出替换循环,因为:"YTG鹰     潭-WOH芜湖东   19   "中间有一个空格认为已经过了替换的需求.Top

3 楼antyell(草田先生)回复于 2005-07-24 10:46:29 得分 0

字段1     字段2             字段3             字段4           字段5         字段6         字段7           字段8     .....  
  YTG         鹰     潭           WOH                 芜湖东         19               17:32         17:32           25032C  
   
   
  就取前八个字段好了.     我现在做的方法是在截取之前先判断.始终用left截取.例如  
   
  x为读入行的字符串  
  yy(0)   =   Mid(x,   1,   3)  
                x   =   Right(x,   Len(x)   -   3)  
                yy(1)   =   Left(Trim(x),   4)  
                If   Right(yy(1),   1)   =   "-"   Then  
                  yy(1)   =   Left(yy(1),   3)  
          End   If  
           
          x   =   Right(x,   Len(x)   -   4)  
          If   Left(x,   1)   =   "-"   Then  
                  x   =   Right(x,   Len(x)   -   1)  
          End   If  
                yy(2)   =   Left(x,   3)Top

4 楼antyell(草田先生)回复于 2005-07-24 10:50:39 得分 0

x   =   Right(x,   Len(x)   -   3)  
                yy(3)   =   Trim(Left(x,   4))            
                x   =   Right(x,   Len(x)   -   4)  
                 
                yy(4)   =   Trim(Left(x,   3))                                
                x   =   Trim(Right(x,   Len(x)   -   3))  
                yy(5)   =   Trim(Left(x,   5))                                              
                x   =   Right(x,   Len(x)   -   6)  
                yy(6)   =   Left(x,   5)                                                                
                x   =   Right(x,   Len(x)   -   5)  
                 
                yy(7)   =   Trim(Left(x,   12))  
   
  然后再把数组写入数据库相应字段,不知有没有更好的方法.Top

5 楼crycoming(瞎编)回复于 2005-07-24 11:36:53 得分 0

取出一行数据   然后用split函数分割到数组中Top

6 楼antyell(草田先生)回复于 2005-07-24 11:43:16 得分 0

得出结果是:  
   
  字段1         字段2                         字段3                         字段4                     字段5                 字段6                    
  YTG               鹰潭                     WOH                                 芜湖东                 19                             17:32                  
     
     
  就取前八个字段好了.         ,注意原来的文本文件中得数据没有分隔符,而是固定长度得,还有得出结果中字段2中鹰潭两字间得空格要去掉.希望大家帮忙,看有没有好方法.Top

7 楼ynsmcn(茫茫)回复于 2005-07-24 13:15:59 得分 10

含有中文的数据文件不能按固定长度处理,楼主的问题第一个中文字段不难,难的是第二个中文字段,我的代码也不是很令人满意,只能用在这个特例。  
   
  我这样做,只考虑了把两个中文字段取出来。  
   
  Private   Sub   Command1_Click()  
  Dim   Fso   As   New   FileSystemObject,   sFile   As   TextStream  
  Dim   strLineText   As   String,   iMidStart   As   Integer,   iMidLen   As   Integer  
   
  Set   sFile   =   Fso.OpenTextFile(App.Path   &   "\data.txt",   ForReading,   False)  
   
  Do   While   Not   sFile.AtEndOfLine  
   
          lLines   =   lLines   +   1  
          strLineText   =   sFile.ReadLine  
           
          iMidStart   =   4:   iMidLen   =   InStr(1,   strLineText,   "-")   -   4  
          Debug.Print   Replace(Mid(strLineText,   iMidStart,   iMidLen),   "   ",   vbNullString)   &   vbTab;  
           
          '下面跳过了一个字段:iMidStart   =   iMidStart   +   iMidLen   +   4  
           
          iMidStart   =   iMidStart   +   iMidLen   +   4:   iMidLen   =   IIf(4   -   InStr(iMidStart,   strLineText,   "   ")   <>   0,   4,   3)  
          Debug.Print   Replace(Mid(strLineText,   iMidStart,   iMidLen),   "   ",   vbNullString)  
           
  Loop  
   
  End   SubTop

8 楼ynsmcn(茫茫)回复于 2005-07-24 13:24:12 得分 0

上面的代码lLines   =   lLines   +   1没有用,应该删掉  
  Top

9 楼jxgzay(jxgzay)回复于 2005-07-24 13:36:04 得分 0

正在帮你编写代码。  
  Top

10 楼jxgzay(jxgzay)回复于 2005-07-24 14:10:44 得分 50

Private   Sub   Command1_Click()  
          '我把你的文本文件保存在d:\test001.txt,  
          Dim   y(7),   z(7)  
          '最后的z(0),z(1),...z(7)为字段内容  
          n   =   FreeFile  
          Open   "d:\test001.txt"   For   Input   As   #n  
          Do   While   Not   EOF(n)  
                  Line   Input   #n,   x  
                  X1   =   StrConv(x,   vbFromUnicode)  
                  y(0)   =   MidB(X1,   1,   3)  
                  y(1)   =   MidB(X1,   4,   6)  
                  y(2)   =   MidB(X1,   11,   3)  
                  y(3)   =   MidB(X1,   14,   6)  
                  y(4)   =   MidB(X1,   21,   2)  
                  y(5)   =   MidB(X1,   24,   5)  
                  y(6)   =   MidB(X1,   30,   5)  
                  y(7)   =   MidB(X1,   42,   6)  
                  For   i   =   0   To   7  
                          z(i)   =   StrConv(y(i),   vbUnicode)  
                          If   i   =   1   Or   i   =   3   Then   '第二和第四字段是中文,压缩空格  
                                  z(i)   =   Replace(z(i),   "   ",   "")  
                          End   If  
                          Debug.Print   z(i)  
                  Next  
          Loop  
          Close   #n  
   
  End   Sub  
  Top

11 楼jxgzay(jxgzay)回复于 2005-07-24 14:15:23 得分 0

要点:  
  1、           StrConv(x,   vbFromUnicode)  
  2、           MidB  
  3、           Replace(z(i),   "   ",   "")  
  4、           StrConv(x,   vbUnicode)Top

12 楼antyell(草田先生)回复于 2005-07-24 22:36:56 得分 0

感谢大家关注Top

相关问题

  • 如何写100K的文本文件到数据库字段中
  • 如何把文本文件的内容读入到数据库表中的相应该字段中。
  • 怎样把数据库中一个表保存成为一个文本文件,字段用逗号隔开?
  • 文本文件保存到数据库?
  • 数据库导出文本文件
  • 文本文件导入数据库
  • 文本文件导入数据库
  • 如何利用sql语句将access数据库中的某个字段的内容输出到一个文本文件当中?
  • 如果要用java对文本文件中的数据按照字段读取并存入数据库,应该怎么做?
  • 如何将,.TEXT的文本文件写入数据库中?

关键词

  • 字段
  • debug
  • imidstart
  • 截取
  • imidlen
  • strlinetext
  • midb
  • 文本文件
  • woh芜湖
  • llines

得分解答快速导航

  • 帖主:antyell
  • ynsmcn
  • jxgzay

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo