精华内容
下载资源
问答
  • C# CSV文件导入数据库

    千次阅读 2014-03-16 21:50:08
    CSV导入数据库,一般是采用逐行读取,数据连接读取,再有这个通过引用Microsoft.VisualBasic.FileIO.TextFieldParser 其它方法我没试过,有朋友可以提示一下,非常感谢。逐行读取方法比较傻,数据连接读取效率...

    做CSV导入数据库,一般是采用逐行读取,数据连接读取,再有这个通过引用Microsoft.VisualBasic.FileIO.TextFieldParser

    其它方法我没试过,有朋友可以提示一下,非常感谢。逐行读取方法比较傻,数据连接读取效率高,通过TextFileParser这个方法比较特殊吧,今天刚发现,感觉不错。

    1.通过数据连接读取

     1:  private void button1_Click(object sender, EventArgs e)
     2:  {
     3:      subImportCsv_Dataset("f:\\", "jjj.csv");
     4:  }
     5:  public void subImportCsv_Dataset(string filePath, string fileName)
     6:  {
     7:      string strConn = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=";
     8:      strConn += filePath;//这个地方只需要目录就可以了                                                      
     9:      strConn += ";Extensions=asc,csv,tab,txt;";
    10:      OdbcConnection objConn = new OdbcConnection(strConn);
    11:      DataSet ds = new DataSet();
    12:      try
    13:      {
    14:          string strSQL = "select * from " + fileName;//文件名,不要带目录
    15:          OdbcDataAdapter da = new OdbcDataAdapter(strSQL, objConn);
    16:          da.Fill(ds);
    17:          //开始导入数据库
    18:      }
    19:      catch (Exception ex)
    20:      {
    21:          throw ex;
    22:      }
    23:  }

     

    2.通过TextFileParser读取

     public class CSVHelper
        {
            static public DataTable ReadCsv(string filepath)
            {
                DataTable dt = new DataTable("NewTable");
                DataRow row;
                Microsoft.VisualBasic.FileIO.TextFieldParser TF = new Microsoft.VisualBasic.FileIO.TextFieldParser(filepath, Encoding.GetEncoding("GB2312"));
                int i = 0;
                string[] strLine;
                while (!TF.EndOfData)
                {
                    try
                    {
                        TF.Delimiters = new string[] { "\t" };
                        strLine = TF.ReadFields();
                        if (i == 0)
                        {
                            for (int j = 0; j < strLine.Length; j++)
                            {
                                dt.Columns.Add(strLine[j]);
                            }
                            //新增加一列,这里列的数据位空
                            dt.Columns.Add(Guid.NewGuid().ToString());
                        }
                        else
                        {
                            row = dt.NewRow();
                            row.ItemArray = strLine;
                            dt.Rows.Add(row);
                        }
                        i++;
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }
                TF.Close();


                return dt;
            }
        }
    
    
    展开全文
  • C# ASP.NET CSV文件导入数据库 原文:C# ASP.NET CSV文件导入数据库 using System; using System.Collections.Generic; using System.Text; using System.Data; using System.D...
    原文:C# ASP.NET CSV文件导入数据库

     

     

     

    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.Data;

    using System.Data.OleDb;

    using System.Data.Sql;

    using System.Data.SqlClient;

    using System.IO;

     

    namespace HPRSP.CommonDataObject

    {

    public class CSVHelper

    {

     

    private string path;

    private string fileName;

    /// <summary>

    /// z构造函数

    /// </summary>

    public CSVHelper(string filePath, string fileName)

    {

    this.path = filePath;

    this.fileName = fileName;

    }

     

    /// <summary>

    /// 从Csv中读取数据

    /// </summary>

    /// <returns></returns>

    public DataTable Read()

    {

    return Read(null);

    }

    /// <summary>

    /// 通过文件流的方式来读取CSV文件,默认第一列为标题列,列之间用逗号分隔

    /// </summary>

    /// <param name="files"></param>

    /// <returns></returns>

    public DataTable ReadCsvFileToTable()

    {

    return ReadCsvFileToTable(true, ',');

    }

    /// <summary>

    /// 通过文件流的方式来读取CSV文件,默认列之间用逗号分隔

    /// </summary>

    /// <param name="files">文件名称</param>

    /// <param name="HeadYes">第一行是否为列标题</param>

    /// <returns></returns>

    public DataTable ReadCsvFileToTable(bool HeadYes)

    {

    return ReadCsvFileToTable(HeadYes, ',');

    }

    /// <summary>

    /// 通过文件流的方式来读取CSV文件

    /// </summary>

    /// <param name="files">文件名称</param>

    /// <param name="HeadYes">第一行是否为列标题</param>

    /// <param name="span">分隔符</param>

    /// <returns></returns>

    public DataTable ReadCsvFileToTable(bool HeadYes, char span)

    {

    //文件路径和文件名

    string files = path + fileName;

    DataTable dt = new DataTable();

    StreamReader fileReader = new StreamReader(files, Encoding.Default);

    try

    {

    //是否为第一行(如果HeadYes为TRUE,则第一行为标题行)

    int lsi = 0;

    //列之间的分隔符

    char cv = span;

    while (fileReader.EndOfStream == false)

    {

    string line = fileReader.ReadLine();

    string[] y = line.Split(cv);

    //第一行为标题行

    if (HeadYes == true)

    {

    //第一行

    if (lsi == 0)

    {

    for (int i = 0; i < y.Length; i++)

    {

    dt.Columns.Add(y[i].Trim().ToString());

    }

    lsi++;

    }

    //从第二列开始为数据列

    else

    {

    DataRow dr = dt.NewRow();

    for (int i = 0; i < y.Length; i++)

    {

    dr[i] = y[i].Trim();

    }

    dt.Rows.Add(dr);

    }

    }

    //第一行不为标题行

    else

    {

    if (lsi == 0)

    {

    for (int i = 0; i < y.Length; i++)

    {

    dt.Columns.Add("Col" + i.ToString());

    }

    lsi++;

    }

    DataRow dr = dt.NewRow();

    for (int i = 0; i < y.Length; i++)

    {

    dr[i] = y[i].Trim();

    }

    dt.Rows.Add(dr);

    }

    }

    }

    catch (Exception ex)

    {

    throw ex;

    }

    finally

    {

    fileReader.Close();

    fileReader.Dispose();

    }

     

    return dt;

    }

     

    /// <summary>

    /// 从csv中读取数据

    /// </summary>

    /// <param name="colNames">列名列表,可为空</param>

    /// <returns></returns>

    private DataTable Read(string[] colNames)

    {

    string sql = CreateSql(colNames);

    return ExecuteTable(sql);

    }

     

    /// <summary>

    /// 通过执行sql语句,从Csv中读取数据

    /// </summary>

    /// <param name="sql">sql语句</param>

    /// <returns></returns>

    private DataTable ExecuteTable(string sql)

    {

    DataTable table = new DataTable();

    using (OleDbConnection connection = new OleDbConnection(GetConnString(true)))

    {

    OleDbCommand command = connection.CreateCommand();

    command.CommandText = sql;

     

    OleDbDataAdapter adapter = new OleDbDataAdapter(command);

    adapter.Fill(table);

    }

    return table;

    }

     

    #region 私有方法

     

    private string CreateSql(string[] colNames)

    {

    string cols = "*";

    if (null != colNames && colNames.Length > 0)

    {

    StringBuilder colList = new StringBuilder();

    for (int i = 0; i < colNames.Length - 1; i++)

    {

    colList.AppendFormat("[{0}],", colNames[i]);

    }

    colList.AppendFormat("[{0}]", colList[colList.Length]);

    cols = colList.ToString();

    }

    return string.Format("select {0} from {1}", cols, fileName);

    }

    private string GetConnString(bool IsHeaderRow)

    {

    return string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Text;FMT=Delimited; HDR={0}';data source={1}", IsHeaderRow ? "Yes" : "No", path);

    }

    #endregion

    }

    }

     

     

     

    在D:\VSS2005\政务\HPRSP_黄埔海关风险管理平台\源代码\CommonDataObject\下增加了CSV文件导入数据库的操作类:CSVHelper.cs .用法很简单,只要传入CSV文件的文件路径和文件名就行。下面是一个例子:

     

     

    string conn = ConfigurationManager.ConnectionStrings["HPRSP"].ToString();

    //获取并保存上传的文件

    if (fuUpload.PostedFile != null)

    fuUpload.PostedFile.SaveAs(Server.MapPath("") + "\\" + fuUpload.FileName);

    else

    throw new Exception("请选择需上传的文件!");

    //在构造函数中传入文件路径和文件名

    HPRSP.CommonDataObject.CSVHelper CsvFile = new HPRSP.CommonDataObject.CSVHelper(Server.MapPath("") + "\\", fuUpload.FileName);

    //调用Read()方法读取文件,具体的实现过程请查看类:CSVHelper.cs

    DataTable dt= CsvFile.Read();

    foreach(DataRow dr in dt.Rows)

    {

    string StoreName = "uspZFPG_INDEX_UPDATE";

     

    ParamCollection parmsInsert = new ParamCollection();

    //下面[]内为列名,即第一行对应的列名称,如下图的测试数据

    //

    parmsInsert.Add(new Param("CustomsCode", dr["关区"].ToString(), ParamType.Varchar, 4, ParameterDirection.Input));

    parmsInsert.Add(new Param("IndexID", dr["指标ID"].ToString(), ParamType.Varchar, 10, ParameterDirection.Input));

    parmsInsert.Add(new Param("StandardValue", dr["目标值"].ToString(), ParamType.Varchar, 50, ParameterDirection.Input));

    parmsInsert.Add(new Param("Value", dr["完成值"].ToString(), ParamType.Varchar, 50, ParameterDirection.Input));

    parmsInsert.Add(new Param("IsReachStandard", dr["是否达标"], ParamType.Nvarchar, 50, ParameterDirection.Input));

     

    try

    {

    SqlDatabase.ExecuteNonQuery(conn, CommandType.StoredProcedure, StoreName, 300, parmsInsert);

    }

    catch (SqlException ex)

    {

    Errors++;

    //string Desc = "导入“执法评估指标 " + dr["IndexID"].ToString() + ",关区 " + dr["CustomsCode"].ToString() + ",时间段标志 " + dr["TimeSpan"].ToString() + "”时出错:" + ex.ToString() + DateTime.Now;

    throw ex;

    }

    }

    posted on 2014-08-25 17:09 NET未来之路 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/lonelyxmas/p/3935380.html

    展开全文
  • /// 通过文件流的方式来读取CSV文件,默认第一列为标题列,列之间用逗号分隔 /// /// <param name="files"></param> /// <returns></returns> public DataTable ReadCsvFileToTable() { return ...

    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.Data;

    using System.Data.OleDb;

    using System.Data.Sql;

    using System.Data.SqlClient;

    using System.IO;

     

    namespace HPRSP.CommonDataObject

    {

    public class CSVHelper

    {

     

    private string path;

    private string fileName;

    /// <summary>

    /// z构造函数

    /// </summary>

    public CSVHelper(string filePath, string fileName)

    {

    this.path = filePath;

    this.fileName = fileName;

    }

     

    /// <summary>

    /// 从Csv中读取数据

    /// </summary>

    /// <returns></returns>

    public DataTable Read()

    {

    return Read(null);

    }

    /// <summary>

    /// 通过文件流的方式来读取CSV文件,默认第一列为标题列,列之间用逗号分隔

    /// </summary>

    /// <param name="files"></param>

    /// <returns></returns>

    public DataTable ReadCsvFileToTable()

    {

    return ReadCsvFileToTable(true, ',');

    }

    /// <summary>

    /// 通过文件流的方式来读取CSV文件,默认列之间用逗号分隔

    /// </summary>

    /// <param name="files">文件名称</param>

    /// <param name="HeadYes">第一行是否为列标题</param>

    /// <returns></returns>

    public DataTable ReadCsvFileToTable(bool HeadYes)

    {

    return ReadCsvFileToTable(HeadYes, ',');

    }

    /// <summary>

    /// 通过文件流的方式来读取CSV文件

    /// </summary>

    /// <param name="files">文件名称</param>

    /// <param name="HeadYes">第一行是否为列标题</param>

    /// <param name="span">分隔符</param>

    /// <returns></returns>

    public DataTable ReadCsvFileToTable(bool HeadYes, char span)

    {

    //文件路径和文件名

    string files = path + fileName;

    DataTable dt = new DataTable();

    StreamReader fileReader = new StreamReader(files, Encoding.Default);

    try

    {

    //是否为第一行(如果HeadYes为TRUE,则第一行为标题行)

    int lsi = 0;

    //列之间的分隔符

    char cv = span;

    while (fileReader.EndOfStream == false)

    {

    string line = fileReader.ReadLine();

    string[] y = line.Split(cv);

    //第一行为标题行

    if (HeadYes == true)

    {

    //第一行

    if (lsi == 0)

    {

    for (int i = 0; i < y.Length; i++)

    {

    dt.Columns.Add(y[i].Trim().ToString());

    }

    lsi++;

    }

    //从第二列开始为数据列

    else

    {

    DataRow dr = dt.NewRow();

    for (int i = 0; i < y.Length; i++)

    {

    dr[i] = y[i].Trim();

    }

    dt.Rows.Add(dr);

    }

    }

    //第一行不为标题行

    else

    {

    if (lsi == 0)

    {

    for (int i = 0; i < y.Length; i++)

    {

    dt.Columns.Add("Col" + i.ToString());

    }

    lsi++;

    }

    DataRow dr = dt.NewRow();

    for (int i = 0; i < y.Length; i++)

    {

    dr[i] = y[i].Trim();

    }

    dt.Rows.Add(dr);

    }

    }

    }

    catch (Exception ex)

    {

    throw ex;

    }

    finally

    {

    fileReader.Close();

    fileReader.Dispose();

    }

     

    return dt;

    }

     

    /// <summary>

    /// 从csv中读取数据

    /// </summary>

    /// <param name="colNames">列名列表,可为空</param>

    /// <returns></returns>

    private DataTable Read(string[] colNames)

    {

    string sql = CreateSql(colNames);

    return ExecuteTable(sql);

    }

     

    /// <summary>

    /// 通过执行sql语句,从Csv中读取数据

    /// </summary>

    /// <param name="sql">sql语句</param>

    /// <returns></returns>

    private DataTable ExecuteTable(string sql)

    {

    DataTable table = new DataTable();

    using (OleDbConnection connection = new OleDbConnection(GetConnString(true)))

    {

    OleDbCommand command = connection.CreateCommand();

    command.CommandText = sql;

     

    OleDbDataAdapter adapter = new OleDbDataAdapter(command);

    adapter.Fill(table);

    }

    return table;

    }

     

    #region 私有方法

     

    private string CreateSql(string[] colNames)

    {

    string cols = "*";

    if (null != colNames && colNames.Length > 0)

    {

    StringBuilder colList = new StringBuilder();

    for (int i = 0; i < colNames.Length - 1; i++)

    {

    colList.AppendFormat("[{0}],", colNames[i]);

    }

    colList.AppendFormat("[{0}]", colList[colList.Length]);

    cols = colList.ToString();

    }

    return string.Format("select {0} from {1}", cols, fileName);

    }

    private string GetConnString(bool IsHeaderRow)

    {

    return string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Text;FMT=Delimited; HDR={0}';data source={1}", IsHeaderRow ? "Yes" : "No", path);

    }

    #endregion

    }

    }

     

    转自http://www.cnblogs.com/starxp/articles/2387804.html

    转载于:https://www.cnblogs.com/Monday/archive/2012/11/20/2779283.html

    展开全文
  • 似乎还需要创建ODBC接口来连接数据库,我创建的时候发现要用到数据库程序 SQL sever 之类的 把CSV文件导入到里面 但是我电脑上没有 有没有什么不用下载数据库程序 直接把CSV文件当作数据库的方法? 还有我的做法有...
  • C#写的将csv文件导入至sql数据库,带存储过程的实例
  • C#从CSV文件批量导入数据保存到数据库,以第一行列名作为数据库里的列名……导出貌似有问题,导入分两种:第一:从加载预览的dataset导入,第二:从csv文件导入,里面注释写的很清楚了,可以看看……
  • CSV 文件分析与导入数据库

    热门讨论 2008-08-28 15:05:08
    CSV全称 Comma Separated values,是一种用来存储数据的纯文本文件格式,通常用于电子表格或数据库软件。这里介绍如何用C#读取CSV文件(通过IDataReader)和导入数据库
  • //读文件源代码; using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.OleDb; namespace lyzApplication2009 { class ReadExcel { private ...

    //读文件源代码;

    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.Data;

    using System.Data.OleDb;

    namespace lyzApplication2009

    {

    class ReadExcel

    {

    private string FileName;

    private string FilsPath;

    /// <summary>

    /// 构造函数文件所在路径

    /// </summary>

    /// <param name="Path">文件路径(Execl文件为完整的路径)</param>

    public ReadExcel(string Path)//构造

    {

    FileName = Path;

    //FilsPath = Files;

    }

    /// <summary>

    /// 构造函数:文件所在路径

    /// </summary>

    /// <param name="Path">文件路径(为Csv文件所在的文件夹路径)</param>

    /// <param name="Files">读Csv文件时的文件名</param>

    public ReadExcel(string Path, string Files)//构造

    {

    FileName = Path;

    FilsPath = Files;

    }

    OleDbConnection OleCon = new OleDbConnection();

    OleDbCommand OleCmd = new OleDbCommand();

    OleDbDataAdapter OleDa = new OleDbDataAdapter();

    #region 读取Execl文件返回DataSet

    /// <summary>

    /// 读取Execl文件返回DataSet

    /// </summary>

    /// <returns>返回结果集</returns>

    public DataSet Execl()

    {

    DataSet Myds = new DataSet();

    OleCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+FileName+";Extended Properties=Excel 8.0;";

    OleCon.Open();

    OleCmd.CommandText="select * from [sheet1$]";

    OleCmd.Connection = OleCon;

    OleDa.SelectCommand = OleCmd;

    try

    {

    OleDa.Fill(Myds, "Execl");

    return Myds;

    }

    catch

    {

    return Myds;

    }

    finally

    {

    OleCon.Close();

    OleCmd.Dispose();

    OleDa.Dispose();

    OleCon.Dispose();

    }

    }

    #endregion

    #region 读取Csv文件返回DataSet

    /// <summary>

    /// 读取Csv文件返回DataSet

    /// </summary>

    /// <returns>Csv内容</returns>

    public DataSet Csv()

    {

    DataSet CsvData = new DataSet();

    OleCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName + ";Extended Properties='Text;FMT=Delimited;HDR=YES;'";

    OleCon.Open();

    OleCmd.Connection = OleCon;

    OleCmd.CommandText = "select * From " + FilsPath ;

    OleDa.SelectCommand=OleCmd;

    try

    {

    OleDa.Fill(CsvData, "Csv");

    return CsvData;

    }

    catch

    {

    return CsvData;

    }

    finally

    {

    OleCon.Close();

    OleCmd.Dispose();

    OleDa.Dispose();

    OleCon.Dispose();

    }

    }

    #endregion

    }

    }

    //写入数据库源代码;此方法是源文件内容中的例必须和要导入的表的例数一至,且数据格式一至

    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.Data;

    using System.Data.Sql;

    using System.Data.SqlClient;

    namespace lyzApplication2009

    {

    /// <summary>

    /// 将数据写入数据库表中去

    /// </summary>

    class SqlBulkData

    {

    SqlConnection SqlCon = new SqlConnection();

    #region 将数据写数据库表中去(大容量)例与数据库表例一至

    /// <summary>

    /// 将数据写数据库表中去(大容量)例与数据库表例一至

    /// </summary>

    /// <param name="_Ds">数据源内容</param>

    /// <param name="_TableName">表名</param>

    /// <returns>返回是否成功!</returns>

    public bool BulkData(DataSet _Ds,string _TableName)

    {

    SqlCon.ConnectionString = PublicClass.ConnectString;

    SqlCon.Open();

    SqlBulkCopy SqlBulk = new SqlBulkCopy(SqlCon);

    SqlBulk.DestinationTableName = _TableName;

    try

    {

    SqlBulk.WriteToServer(_Ds.Tables[0], DataRowState.Unchanged);

    return true;

    }

    catch

    {

    return false;

    }

    finally

    {

    SqlCon.Close();

    SqlCon.Dispose();

    SqlBulk.Close();

    }

    }

    #endregion

    }

    }

    转载于:https://www.cnblogs.com/px7034/archive/2010/09/09/1822071.html

    展开全文
  • //读文件源代码; using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.OleDb; namespace lyzApplication2009 {...
  • 希望能有大手来教下 新手 我大概的想法是先用openfile找到我们要的csv文件 然后将文件导入一个datatable中 然后再将数据弄到dadatagrdview中 当然希望能有代码 这种导入是不需要经过数据库的吧
  • 页面的上面有一个TextBox框,后面是个Browse按钮,好象是点几Browse按钮就把CSV文件的位置显示出来.是显示路径的吧 然后有一个Input按钮 1.btnInput按下时 1.1ReadEvent 调用doRead从CVS文件中...
  • //读文件源代码;using System;using System.Collections.Generic;using System.Text;using System.Data.OleDb;using System.Data; namespace CC{public class ReadExcel { private string F...
  • protected void ImportData(string filePath) { if (filePath.Length == 0) { MessageBox.Show("请选择要导入的txt文件"); } using (FileStream f
  • 该程序用 C# 编写 源码下载地址:https://github.com/mingzhang678/csv2db
  • //读文件源代码;using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.OleDb;namespace lyzApplication2009{class ReadExcel{private string FileName;private ...
  • c#自带压缩类实现数据库表导出到CSV压缩文件的方法 原文:c#自带压缩类实现数据库表导出到CSV压缩文件的方法 在导出大量CSV数据的时候,常常体积较大,采用C#自带的压缩类,可以方便的实现该功能,并且...
  • C#关于CSV文件的读取以及数据的输出

    千次阅读 2019-05-25 16:47:19
    在很多实际业务中,经常会有从外部CSV文件数据导入到系统里,更新数据库,或者更新云端Entity。 这个是非常简单的一个应用,具体也可以查看微软官方文档。 1. 安装Visula Studio,目前的最新版本是2019版,也可以...
  • 在小批量数据导入的时候,最常用的就是使用excel工具,将数据保存为xls或csv文件,然后上传到服务器,然后读取出来通过数据库访问类的相关方法更新到数据库中。对于如何读取xls文件的方法,网上太多了,使用excel...
  • 将几百万条数据导入数据库中,怎么样高效率的导入? 下面我就介绍一个高效率的方法: 1、将数据库文件(DB.... /// 将CSV文件的数据读取到DataTable中 /// </summary> /// <param name="fileName"...
  • CSV 是一种以逗号进行特征分隔的文本文件类型,在数据库或电子表格中是一种非常常见的导入导出格式。本篇图文就以泰坦尼克号船员获救预测( Kaggle)中使用的数据集为例来说明 C#、Python和Pandas 如何读取 CSV 数据...
  • Csv文件的优势就发挥出来了,无需运行环境,方便移植,可以模拟小型数据库:实现快速读写,以及增删改查的功能。 Csv文件是以逗号间隔的文本文件,完美兼容xls,xlsx和txt。 相比于Excel,CSV导入文件可以更快,...
  • 将几百万条数据导入数据库中,怎么样高效率的导入?下面我就介绍一个高效率的方法:1、将数据库文件(DB.csv)... /// 将CSV文件的数据读取到DataTable中 /// </summary> /// <param name="fileName"&g...

空空如也

空空如也

1 2 3
收藏数 56
精华内容 22
热门标签
关键字:

c#csv文件导入数据库

c# 订阅