思路:先把csv文件用fso读取出来,根据定的格式,分割成自己相要的内容,然后分别写入数据库中

eg:先对读取出来的数据做一个检查,符合条件的数据就作为一个整体,要么插入成功,要么插入失败,不符合条件的打印错误信息。

try
    {

myConnection.Open();
     OleDbTransaction ts=myConnection.BeginTransaction();   //开始事务
     cmd.Transaction=ts;
     StreamReader f=new StreamReader(oFile.PostedFile.InputStream,System.Text.Encoding.Default);  //读取数据库的数据流
     while ((input=f.ReadLine())!=null)           //while循环
     {
      if (iLine==0) //第一行是标题,忽略
      {
       output=input+"\r\n";
       myOutput.Add(output);
       iLine++;
       continue;
      }
      //     TextBox1.Text+=input+"\r\n";
      if (input.Trim()=="") continue;
      asF=input.Split(",".ToCharArray());

if (asF[0]!=null && asF[0]!="" && asF[0].Trim().Substring(0,1)=="*") //有取消标志的不作处理
      {
       output=input+"\r\n";
       myOutput.Add(output);
       continue;
      }
      else if (asF.Length<5) //列小于5就标上错误标志
      {
       iErrorCount++;
       output="*"+input+",本行数据不足5列!\r\n";
       myOutput.Add(output);
      }
      else if (!(IsDate(asF[1])&&IsNumber(asF[3])&&IsNumber(asF[4]))) //未通过数据格式检验
      {
       iErrorCount++;
       output="*"+input+",数字或日期不正确\r\n";
       myOutput.Add(output);
      }
      else //正常的数据
      {
       try
       {
        cmd.CommandText = "select orgasn from torga where orgaid='"+asF[2].Trim()+"'";
        object oSN=cmd.ExecuteScalar();
        if (oSN==null)
        {
         throw (new Exception("门店不存在"));
        }
        int iSN=int.Parse(oSN.ToString());

cmd.CommandText=string.Format("insert into tshopsav (shopsn,SavDate,SavAmount,PointsAmount,flag,createdby,createdon,lastupdatedby,lastupdatedon)"+
         " values ({0} ,to_date('{1}','yyyy-mm-dd'),to_number('{2}'),to_number('{3}'),'0',{4},sysdate,{5},sysdate)",
         iSN,asF[1].Trim(),asF[3].Trim(),asF[4].Trim(),m_sUserSN,m_sUserSN);
        cmd.ExecuteNonQuery();
        output=input+"\r\n";
        myOutput.Add(output);
       }
       catch(Exception ex)
       {
        iErrorCount++;
        output="*"+input+","+ex.Message+"\r\n";
        myOutput.Add(output);
       }
      }
      iLine++;
     }

if (iErrorCount==0)
     {
      ts.Commit();
      myConnection.Close();
      //     TextBox1.Text="数据导入成功!";
      this.RegisterStartupScript("javascript","<script language=javascript>window.opener.document.forms(0).submit();window.close();</script>");  //数据导入成功后,刷新父窗体。数据导入的结果直接体现在界面上
     }
     else
     {
      ts.Rollback();    //数据导入失败,直接回滚事务。
      myConnection.Close();

Response.Clear();
      Response.ClearHeaders();
      Response.Buffer= true;
      Response.Charset="GB2312"; 
          Response.AppendHeader("Content-Disposition","attachment;filename=error.csv"); 
          Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
          Response.ContentType = "text/csv";//设置输出文件类型为text文件。

this.EnableViewState = false;

System.Collections.IEnumerator myEnumerator = myOutput.GetEnumerator();
      while ( myEnumerator.MoveNext() )
       Response.Write(myEnumerator.Current.ToString());
      Response.Flush();
      Response.End(); 
      Response.SuppressContent=true;

return;
     }

}
    catch(Exception ex)
    {
        }

转载于:https://www.cnblogs.com/jameshappy/archive/2008/12/28/1363744.html

导入csv文件到数据库相关推荐

  1. plsql如何导入csv文件,PLSQL导入csv文件到数据库

    搜索热词 好久不用oracle了,突然忘记怎么导入数据了.今天再记录一下吧. 1.建表.目的是:被导入到数据的存储位置. 因为数据库中曾经有过相同表结构的表,所以直接使用sql建表. sql" ...

  2. Oracle数据库表导出和导入csv文件操作

    Oracle数据库表导出和导入csv文件操作 数据库是Oracle 9i 1.导出csv文件 这个十分简单,用pl/sql工具即可,首先选中要导出的表,右键选择Query data,在左侧出现的窗口中 ...

  3. python 导入csv文件到oracle_python将文件夹下的所有csv文件存入mysql和oracle数据库

    #oracle版 首先新建python脚本(d:/python/orclImport.py) import os #引入os包 if __name__ == '__main__': #遍历文件夹下所有 ...

  4. mysql linux导入csv主键,MySQL导入csv文件内容到Table及数据库的自增主键设置

    写在前面 目的是测试将csv文件内容导入到表中, 同时记录一下自增主键的设置. 测试采用MySQL8.0. 新建表customer_info如下, 未设置主键. 修改上表, 添加主键id, 并设置为自 ...

  5. Oracle数据库导入csv文件(sqlldr命令行)

    1.说明 Oracle数据库导入csv文件, 当csv文件较小时, 可以使用数据库管理工具, 比如DBevaer导入到数据库, 当csv文件很大时, 可以使用Oracle提供的sqlldr命令行工具, ...

  6. 向oracle中导入*.csv文件

    向oracle中导入*.csv文件 1.什么是*.csv,如何得到? 里面存放的是数据表.每行代表数据库表格的一行, 每行中,每两个数据中间由逗号","分割. *.csv可以通过& ...

  7. mysql中导入csv文件_怎么把csv文件导入mysql?

    将CSV文件导入mysql数据库的方法: (1)准备csv文件. 把数据集正确地保存为csv文件即可,保存后的文件名和路径为"D:/train.csv" (2)在数据库中新建一个用 ...

  8. python爬虫案例分析:爬取肯德基门店地址数据导入csv文件并最终用excel文档呈现

    1.用到的模块: requests pprint csv 2.找到肯德基门店网站进入门店位置页面后,打开抓包工具,找到response中包含所需信息的正确的url信息 3. 导入地址url 4.为防止 ...

  9. 将csv写入mysql数据库_从.csv文件到数据库

    一个整理得干干净净的数据库在现实中往往是可遇不可求的,或者说总是要买.记得唯一一次获得这种半成品是在参与一个前导师跟广州地铁的合作项目里,当时对方很爽快地给了我们一个巨大的dump文件.我之后就再没碰 ...

最新文章

  1. gcc for Windows 开发环境介绍
  2. python【力扣LeetCode算法题库】28-实现 strStr()
  3. java-判断相同和对象比较大小
  4. linux-basic(7)linux文件与目录管理
  5. AI顶会,正在使用AI来审阅AI论文
  6. linux dns resolver,如何解决Linux in-kernel dns_resolver问题
  7. resiprocate 之repro注册
  8. Spring(16)——使用注解进行bean定义
  9. codeforce 460B Little Dima and Equation
  10. 三角形 JAVA 代码
  11. H5编辑器核心算法和思想-遁地龙卷风
  12. QTTabBar 「资源管理器」让你的文件夹拥有浏览器标签页般的体验
  13. python dict.get 用法
  14. cdn刷新api_阿里云cdn刷新api
  15. linux大业内存,linux 内存占用过大分析
  16. 熔断机制什么意思_熔断机制是什么意思(图文)
  17. Android——一个简单的闹钟APP
  18. H7-TOOL脱机烧录器支持1拖4,支持新唐,GD32,MM32,AT32,APM32,CX32,STM32,STM8,i.MX RT,W7500,外置Flash等2020-10-27
  19. Python编程基础(2)
  20. [linux无线子系统]主动扫描之发送Probe Request帧

热门文章

  1. logback源码解读笔记(springboot)
  2. python代码使用dns进行调试_dnspython模块常见用法
  3. OpenGL学习: 投影矩阵和视口变换矩阵(math-projection and viewport matrix)
  4. Excel,python全都靠边站,这才是数据分析应该有的样子
  5. 云来场景应用LiveApp疑遭“山寨”
  6. 瑞芯微RK3188方案 RK3188方案定制 RK3188性能如何 RK3188软硬件设计定制 RK3188评测
  7. 值得一刷系列,航班预订统计拼车
  8. 一键Pip下载安装使用YOLO系列目标检测算法,YOLOv7都能Pip ! ! !
  9. Open Source - 在线Office方案
  10. mysql在什么情况下会变成全局查询_Linux下MYSQL数据语言,全局变量,查询