读取txt文件指定内容数据存储到数据库

这段代码展示了如何使用C#的SqlBulkCopy类将TXT文件中的数据批量导入到SQL Server数据库。程序读取指定路径的TXT文件,过滤特定内容并创建DataTable,然后通过SqlBulkCopy方法将数据插入到access_timeinfo表中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!--本地数据库-->
    <add key="connectionString1" value="data source=.;Initial Catalog=dz;persist security info=True;MultipleActiveResultSets=True;User ID=sa;Password=123456;" />

        public static string conStr = ConfigurationManager.AppSettings["connectionString1"].ToString();//数据库连接字符串

        static void Main(string[] args)
        {

              for (int i = 0; i < 4; i++)
              {
                  string filePath = @"C:\Users\wchi\Desktop\岳阳对账\2021-05-19\2021-05-19\";
                  if (i == 0)
                  {
                      filePath += "file.txt";
                  }
                  else
                  {
                      filePath += "file" + i + ".txt";
                  }
                  DataTable dt = fileToString(filePath);
                  SqlBulkCopyInsert(conStr, "access_timeinfo", dt);
              }

        }   

 

        /// <summary>
        /// 读取txt文件到DataTable
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public static DataTable fileToString(String filePath)
        {
            DataTable dt = new DataTable();
            try
            {
                dt.Columns.Add("access_time");
                dt.Columns.Add("access_timehourse");
                string line;
                // 创建一个 StreamReader 的实例来读取文件 ,using 语句也能关闭 StreamReader
                using (System.IO.StreamReader sr = new System.IO.StreamReader(filePath, Encoding.GetEncoding("GB2312")))
                {
                    // 从文件读取并显示行,直到文件的末尾
                    while ((line = sr.ReadLine()) != null)
                    {
                        //Console.WriteLine(line);
                        if (line.IndexOf("8.11入参") > -1)
                        {
                            DataRow dr = dt.NewRow();
                            dr["access_time"] = line.Substring(0, 24).ToString();
                            dr["access_timehourse"] = line.Substring(0, 13).ToString();
                            dt.Rows.Add(dr);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                // 向用户显示出错消息
                Console.WriteLine("The file could not be read:");
                Console.WriteLine(e.Message);
            }
            return dt;
        }

 

        /// <summary>  
        /// 注意:DataTable中的列需要与数据库表中的列完全一致。
        /// 已自测可用。
        /// </summary>  
        /// <param name="conStr">数据库连接串</param>
        /// <param name="strTableName">数据库中对应的表名</param>  
        /// <param name="dtData">数据集</param>  
        public static void SqlBulkCopyInsert(string conStr, string strTableName, DataTable dtData)
        {
            try
            {
                using (SqlBulkCopy sqlRevdBulkCopy = new SqlBulkCopy(conStr))//引用SqlBulkCopy  
                {
                    sqlRevdBulkCopy.DestinationTableName = strTableName;//数据库中对应的表名  
                    sqlRevdBulkCopy.NotifyAfter = dtData.Rows.Count;//有几行数据  
                    sqlRevdBulkCopy.WriteToServer(dtData);//数据导入数据库  
                    sqlRevdBulkCopy.Close();//关闭连接  
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值