zoukankan      html  css  js  c++  java
  • .NetCore3.1获取文件并重新命名以及大批量更新及写入数据

    using Microsoft.AspNetCore.Mvc;
    using MySql.Data.MySqlClient;
    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace TestCoreDemo.Controllers
    {
        using System.IO;
        using Microsoft.AspNetCore.Hosting;
        using Microsoft.Extensions.FileProviders;
    
        public class UpdateGalleryTypeController : Controller
        {
            private IWebHostEnvironment _env;
            private IFileProvider _fileProvider;
            public UpdateGalleryTypeController(IWebHostEnvironment env, IFileProvider fileProvider)
            {
                this._env = env; this._fileProvider = fileProvider;
            }
            public IActionResult Index()
            {
                string msg = "";
                //DoUpdateBigData(out msg);//--大批量更新数据
                //DoBigDataInsert(out msg);//-------大数据批量写入
                string imgpath = Path.Combine(_env.WebRootPath, "smallimgs");
                string toFilePath = Path.Combine(_env.WebRootPath, "newFilePath");
                DirectoryInfo direcinfo = new DirectoryInfo(imgpath);
                if (direcinfo != null && direcinfo.Exists)
                {
                    int index = 1100000;
                    foreach (var item in direcinfo.GetFiles())
                    {
                        if (item is FileInfo)
                        {
                            index += 1;
                            string fileExStr = Path.GetExtension(item.Name);
                            string newfilePath = Path.Combine(toFilePath, index + fileExStr);
                            System.IO.File.Copy(item.FullName, newfilePath);//---读取一个文件夹下面的所有文件并命名
                        }
                    }
                }
    
                ViewBag.result = msg;
                return View();
    
            }

    //*---通常我们平时需要一些比较大的测试数据,一次性写入,或者写入到队列在持久化到数据库,感觉写入的效率差强人意(刷新数据库只有几十几十的新增) //-----大批量的写入数据,测试中发现平均一秒写入的速度可达 400-500多条数据的样子,应该还有更高效的方法,欢迎大家给出宝贵的建议! private void DoBigDataInsert(out string msg) { try { Stopwatch watch = new Stopwatch(); watch.Start(); string dbconnectionStr = "server=****;uid=fengge;pwd=qq88;port=3306;database=BigDataTest;sslmode=none;"; StringBuilder sb = new StringBuilder(); int index = 0; for (int i = 0; i < 1000000; i++) { sb.Append("insert into Person(id,name,age)values('" + Guid.NewGuid().ToString() + "','name_" + new Random().Next(1, 99999) + "','" + new Random().Next(12, 38) + "');"); index = index + 1; if (index % 500 == 0) { Task.Run(() => DoWork(sb.ToString(), dbconnectionStr)).Wait(); sb.Clear(); } } if (sb != null && sb.Length > 0) { DoWork(sb.ToString(), dbconnectionStr); } msg = "ok"; watch.Stop(); ViewBag.totalTime = watch.Elapsed.TotalSeconds; } catch (Exception ex) { msg = ex.Message; } }

         //---比较高效一点的大批量修改数据
         //--应该还有更高效的方法,欢迎大家指出,谢谢
    private void DoUpdateBigData(out string msg) { try { string dbconnectionStr = "server=aaaa;uid=QQ;pwd=aa222;port=3306;database=zrfDb;sslmode=none;"; using (yiyuneduContext db = new yiyuneduContext()) { var list = db.Gallery.Where(c => c.Gallerytype == null).Select(c => new { c.Galleryid, c.Gallerycontent }); StringBuilder sb = new StringBuilder(); int index = 0; list.ToList().ForEach(c => { var id = c.Galleryid; string _type = c.Gallerycontent.Substring(c.Gallerycontent.LastIndexOf('.') + 1); sb.Append("update gallery set gallerytype='" + _type + "' where galleryid='" + id + "';"); index = index + 1; if (index % 200 == 0) { Task.Run(() => DoWork(sb.ToString(), dbconnectionStr)).Wait(); sb.Clear(); } //update gallery set gallerytype=right(gallerycontent,3) where galleryid='FFA06D63-76E3-C31F-DE4B-EA30DAB78096'; }); if (sb != null && sb.Length > 0) { DoWork(sb.ToString(), dbconnectionStr); } } msg = "ok"; } catch (Exception ex) { msg = ex.Message; } } private void DoWork(string sql, string connectionDbStr) { using (MySqlConnection conn = new MySqlConnection(connectionDbStr)) { conn.Open(); using (MySqlCommand comm = new MySqlCommand()) { comm.CommandText = sql; comm.CommandType = System.Data.CommandType.Text; comm.Connection = conn; comm.ExecuteNonQuery(); } } } } }
  • 相关阅读:
    使用netty实现im聊天
    使用rabbitmq实现集群im聊天服务器消息的路由
    springcloud feign使用
    10万用户一年365天的登录情况如何用redis存储,并快速检索任意时间窗内的活跃用户
    redis的rdb与aof持久化机制
    springcloud-zinpin的安装与使用
    kafka的基本安装与使用
    RabbitMq 实现延时队列-Springboot版本
    RabbitMq 基本命令
    Dcoker 安装 rabbitMq
  • 原文地址:https://www.cnblogs.com/Fengge518/p/12248303.html
Copyright © 2011-2022 走看看