• 将csv文件导入到数据库中


    1、csv文件简介

      CSV全称 Comma Separated values,是一种用来存储数据的纯文本文件格式,通常用于电子表格或数据库软件。这样你就发现了,csv其实就是纯文本文件,可以使用记事本打开。但是因为他一般表示的是表,所以windows下默认的是用excel打开的。

      他的规则如下:

     开头是不留空,以行为单位。

    • 可含或不含列名,含列名则居文件第一行。(这一点在插入时需要注意判断,如果第一行是列名,那么需要把第一行数据抛弃)
    • 一行数据不垮行,无空行。
    • 以半角符号[,]作分隔符,列为空也要表达其存在。
    • 列内容如存在[,],则用双引号[””]将该字段内容包含起来。
    • 列内容如存在[”],双引号[””]将该字段内容包含起来,并且在内容中用两个双引号表示一双引号[””]。
    • 文件读写时引号,逗号操作规则互逆。
    • 内码格式不限,可为ASCII、Unicode或者其他。

    2、插入数据库操作

      将csv文件插入数据库是一个常见的需求,最简单的做法就是直接读取csv文件,然后一行一行读出来后用split(",")分割之后插到数据库中。当然这种方法虽然看起来简单,但是有写问题很难解决。比如列内容中有[,]的问题,这种情况如果用这种方法的话很难判断。所以一般情况下不能推荐使用这种方法来插入数据。

      今天我介绍的方法是用Microsoft ActiveX Data Objects 来做:

    (1)引入Microsoft ActiveX Data Objects

      右击“引用”——COM选项卡——Microsoft ActiveX Data Objects,我的电脑是6.0版本的,实际使用中版本间差距不大,代码都可以通用。

     

    (2)代码部分:

            /// <summary>
            /// 将csv文件导入到数据库中
            /// </summary>
            /// <param name="strCSVFile">导入的文件名</param>
            /// <param name="strPathToTextFile">文件的存储路径</param>
            public void test(string strCSVFile, string strPathToTextFile)
            {
                Connection adoCSVConnection = null;
                Recordset adoCSVRecordSet = null;
                try
                {
                    adoCSVConnection = new Connection();
                    adoCSVRecordSet = new Recordset();
                    adoCSVConnection.Open(string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"text;HDR=YES;FMT=Delimited\"", strPathToTextFile));
                    adoCSVRecordSet.Open(string.Format("SELECT * FROM {0}", strCSVFile), adoCSVConnection);
                    while (!adoCSVRecordSet.EOF)
                    {
                        for (int i = 0; i < adoCSVRecordSet.Fields.Count; i++)
                        {
                            var strsource = adoCSVRecordSet.Fields[i].Value;
                  //到这里你懂的了吧...^_^ } adoCSVRecordSet.MoveNext();
    } } catch (Exception ex) { } finally { if (adoCSVRecordSet != null) { adoCSVRecordSet.Close(); } if (adoCSVConnection != null) { adoCSVConnection.Close(); } } }

      这种方法其实是将csv文件作为一种数据库来操作,你可以看到有连接字符串"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"text;HDR=YES;FMT=Delimited\""。

     

      将csv文件插入到数据库中还有很多因素要考虑,比如对于大批量的数据需要用到多线程,以及对于mvc中无法使用webform中的委托回调函数来获得数据更改ui线程。这些问题以后有时间再写出来。

    移步我最优惠网,尽享全网折扣商品。

    PS:我最优惠网是一个汇集京东、天猫、Amazon等知名电商优惠活动和商品的网站,更精明的剁手,从我最优惠开始

  • 相关阅读:
    thymeleaf种处理select,radio和文字回显的问题
    springboot java.util.NoSuchElementException: No value present 异常处理
    Linux报错之ping: www.baidu.com: Name or service not known
    linux虚拟机黑屏解决
    Winscp无法连接linux虚拟机解决
    linux下centos解压时报错: gzip: stdin: not in gzip format   tar: Child returned status 1   tar: Error is not recoverable: exiting now
    CentOS无法使用ifconfig和root密码修改
    python基础学习(linux命令)
    DBCP|C3P0参数详解
    BeanUtilsDBUtils
  • 原文地址:https://www.cnblogs.com/zhangkai2237/p/2635317.html
Copyright © 2020-2023  润新知