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

在vb中怎样把文本的数据导入导sql数据库中

楼主jackief(小鱼儿)2003-12-02 14:42:01 在 VB / 数据库(包含打印,安装,报表) 提问

各位大虾:  
   
            小弟现在遇到了一个棘手的问题。我要做一个上传的程序,要求是要把文本的数据导入导sql中,语言是vb,那位高手能指点一二。备感不尽。 问题点数:0、回复次数:6Top

1 楼SoHo_Andy(冰)回复于 2003-12-02 14:55:37 得分 0

给你一个小例子  
  试试看  
                   
  Dim   strConnect   As   String  
                  strConnect   =   "Provider=SQLOLEDB.1;Persist   Security   Info=True;User   ID=sa;Initial   Catalog=test;Data   Source=ivy;PASSWORD=sunday"  
                  Dim   Conn   As   New   ADODB.Connection    
                  Conn.CursorLocation   =   adUseClient   '游标位置在客户端  
                  Conn.Open   strConnect   '打开数据库连接  
                  Conn.Execute   ("BULK   INSERT   tbl   From   '"   &   aaa   &   "'with(FIELDTERMINATOR=';')   ")  
                  '批量插入文本文件中的数据到数据表,指定文本中数据分隔符为";"  
   
  Top

2 楼yoki(小马哥--鬓微霜,又何妨)回复于 2003-12-02 15:26:35 得分 0

文件传输总分部数据  
   
  写procedure把新增修改记录导出文本,这样需要在表中添加判断标志,  
  如:1   未传传输,2   已上传  
   
  把文本传到其他服务器,这个可以用前台软件写个传输文件程序(或者直接用  
  master..xp_cmdshell),取指定服务器目录内的文件,再用过程导入数据库,导入时进行数据过滤  
   
   
  程序可以这样写过程   比如表名叫table   状态字段为state   (1   未传传输,2   已上传)  
   
  CREATE   PROCEDURE   sp_convert   --数据转换过程  
  with   recompile   ,encryption  
  as  
  declare  
      @bcp   varchar(600),  
      @path   char(100),  
      @file   char(200),  
      @user   char(10),  
      @mdate   char(8)  
      @mdept   char(5),  
      @passwd   char(8)  
      if     @@TRANCOUNT   >0  
                COMMIT   TRAN    
      select   @user=suser_name()  
      select   @passwd=password   from   login   where   code=ltrim(rtrim(@username))   --用户登录表  
      select   @path=ltrim(rtrim(up_path))+'download\'  
          from   parm   --运行参数表   包括文件传输路径  
      select   @mdate=convert(char(8),cast(open_close   as   datetime),112)  
      select   @file='file'+@mdate   得到带日期的txt文件  
         
  --convert   data   to   txt  
   
  select   @bcp='bcp   "select   *   from   dbname..table   where   state=1   "     queryout   '+ltrim(rtrim(@path))+ltrim(rtrim(@file))+'.txt'+'   -c   -t,   -U   '+@user+'-P   '+@passwd   --选择未传输数据导出  
  exec   master..xp_cmdshell   @bcp  
  begin   tran  
  update   dbname..table     set   state=1   where   ct_state=1   --更新状态  
  commit   tran  
   
   
  CREATE   PROCEDURE   sp_copyfile   --文件copy过程  
  with   recompile,encryption  
  as  
  declare  
      @path   char(100),  
      @copy   char(300),  
      @user   char(10),  
      @passwd   char(8),  
      @bcpname   char(300)  
   
  if     @@TRANCOUNT   >0  
          COMMIT   TRAN    
      select   @usere=suser_name()  
      select   @passwd=password   from   login   where   code=ltrim(rtrim(@username))  
      select   @path=ltrim(rtrim(up_path))+'upload\'     from   parm  
   
     
  --copy   files   to   servers  
  select   @copy='copy   '+ltrim(rtrim(@path))+'file*.txt   '+ltrim(rtrim(@path))+substring(convert(char(8),getdate(),112),7,2)  
  exec   master..xp_cmdshell   @copy  
  select   @copy='del   '+ltrim(rtrim(@pathname))+'file*.txt'   --copy完成删除文件  
  exec   master..xp_cmdshell   @copyname  
      if     @@TRANCOUNT   >0  
                        COMMIT   TRAN    
  return    
   
  总部每天做日结处理,也用同样的方法导出数据成文本,在分部与总部联接传输数据据同时把  
  总部数据传入分部  
  Top

3 楼online(龙卷风V4.0--决战江湖(MS MVP-VB))回复于 2003-12-02 15:33:14 得分 0

同意使用sqlserver中的bulk   insert  
  先删除  
  delete   dcss_dwjbda   where   bldddm   =   @bldd   and   sj   =   @sbsj  
  然后插入  
  bulk   insert   dcss_dwjbda  
              from   'c:\trans.txt'  
          with(  
  FIELDTERMINATOR   =   '|',  
  ROWTERMINATOR   =   '|\n',  
  FIRSTROW   =   2  
  )  
  这种方法速度非常快,放在vb中调用即可  
  可以考虑写在存储过程中  
  CREATE   PROCEDURE   insert_from_text  
  AS  
  begin  
          declare   @max_sj   datetime --以前最大时间  
   
          if   @tableno   =   '0011'  
          begin  
  delete   dcss_dwjbda   where   bldddm   =   @bldd   and   sj   =   @sbsj  
  bulk   insert   dcss_dwjbda  
              from   'c:\trans.txt'  
          with(  
  FIELDTERMINATOR   =   '|',  
  ROWTERMINATOR   =   '|\n',  
  FIRSTROW   =   2  
  )  
          end  
  end  
   
  vb中  
  Dim   rs   As   New   ADODB.recordset  
  rs.open   insert_from_text,connTop

4 楼yoki(小马哥--鬓微霜,又何妨)回复于 2003-12-02 15:38:15 得分 0

http://expert.csdn.net/Expert/topic/2429/2429510.xml?temp=.6784021  
   
  http://expert.csdn.net/Expert/topic/2457/2457457.xml?temp=.6571161Top

5 楼yoki(小马哥--鬓微霜,又何妨)回复于 2003-12-02 15:39:59 得分 0

/**   导入文本文件  
  EXEC   master..xp_cmdshell   'bcp   "dbname..tablename"   in   c:\DT.txt   -c   -Sservername   -Usa   -Ppassword'  
   
  /**   导出文本文件  
  EXEC   master..xp_cmdshell   'bcp   "dbname..tablename"   out   c:\DT.txt   -c   -Sservername   -Usa   -Ppassword'  
  或  
  EXEC   master..xp_cmdshell   'bcp   "Select   *   from   dbname..tablename"   queryout   c:\DT.txt   -c   -Sservername   -Usa   -Ppassword'  
   
  导出到TXT文本,用逗号分开  
  exec   master..xp_cmdshell   'bcp   "库名..表名"   out   "d:\tt.txt"   -c   -t   ,-U   sa   -P   password'  
   
   
  BULK   INSERT   库名..表名  
  FROM   'c:\test.txt'  
  WITH   (  
          FIELDTERMINATOR   =   ';',  
          ROWTERMINATOR   =   '\n'  
  )  
  Top

6 楼yoki(小马哥--鬓微霜,又何妨)回复于 2003-12-02 15:40:41 得分 0

http://expert.csdn.net/Expert/topic/2341/2341997.xml?temp=.5800287Top

相关问题

  • 怎样将文本文件的内容导入MS SQL数据库
  • Excel导入sql数据库
  • 高分求将文本(txt)文件导入到SQL数据库的代码!!!!!在线等!!!!!!!!!!!!!!!!!!
  • 从EXCET导入SQL数据库
  • 用VB如何创建sql数据库并导入已有的数据库文件
  • vb代码里访问sql数据库
  • VB怎么连接SQL数据库???
  • 关于vb连接sql数据库
  • 用VB连SQL数据库的问题
  • vb操作SQL数据库问题:

关键词

  • .net
  • 文本
  • 数据
  • 文件
  • 导入
  • strconnect
  • 程序
  • conn
  • 过程

得分解答快速导航

  • 帖主:jackief

相关链接

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

广告也精彩

反馈

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