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();
}
}
}
}
}

.NetCore3.1获取文件并重新命名以及大批量更新及写入数据的更多相关文章

  1. C#将文件转成16进制码流写入数据库存起来,访问的时候再还原成PDF文件。

    转自https://blog.csdn.net/liubowei_0312/article/details/53378146 适合将文件写入数据库,远程访问的时候还原1.首先把文件转成十六进制文件流 ...

  2. 牛客网Java刷题知识点之File对象常用功能:获取文件名称、获取文件路径、获取文件大小、获取文件修改时间、创建与删除、判断、重命名、查看系统根目录、容量获取、获取某个目录下内容、过滤器

    不多说,直接上干货! 获取文件名称.获取文件路径.获取文件大小.获取文件修改时间 FileMethodDemo.java package zhouls.bigdata.DataFeatureSelec ...

  3. lr文件下载脚本(文件参数化重命名)

    http://wenku.baidu.com/link?url=6oiIadyF9eFS4VshKbfJDnxrBh2IX919ndi0JO8yoqTRNRNIpavFrZJ9LPVb-FBSfbRY ...

  4. Web 在线文件管理器学习笔记与总结(11)获取文件夹信息 (12)返回上一级操作

    (11)获取文件夹信息 文件夹没有修改操作. index.php: <?php require 'dir.func.php'; require 'file.func.php'; require ...

  5. 运用CMD命令关于快速获取文件夹名称和快速建立文件夹

    前些天头儿让我建立一本本的文件夹,让后交给我了几个命令,快速获取文件夹的名称和快速建立文件夹,省去了一个个的按F2,一个个的复制,粘贴,一个个的新建,再复制粘贴. 首先讲一下第一个问题,快速获取文件夹 ...

  6. 【转】linux C++ 获取文件信息 stat函数详解

    stat函数讲解 表头文件:    #include <sys/stat.h>             #include <unistd.h>定义函数:    int stat ...

  7. 从字符串总分离文件路径、命名、扩展名,Substring(),LastIndexOf()的使用;替换某一类字符串,Replace()的用法

    一:从字符串总分离文件路径.命名.扩展名,上图 二:代码 using System; using System.Collections.Generic; using System.ComponentM ...

  8. stat(),lstat(),fstat() 获取文件/目录的相关信息

    stat 的使用 Linux有个命令,ls -l,效果如下: 这个命令能显示文件的类型.操作权限.硬链接数量.属主.所属组.大小.修改时间.文件名.它是怎么获得这些信息的呢,请看下面的讲解. stat ...

  9. [Python] python3 文件操作:从键盘输入、打开关闭文件、读取写入文件、重命名与删除文件等

    1.从键盘输入 Python 2有两个内置的函数用于从标准输入读取数据,默认情况下来自键盘.这两个函数分别是:input()和raw_input(). Python 3中,不建议使用raw_input ...

随机推荐

  1. UnitTest + HTMLTestRunner

    #导入HTMLTestRunner类 from unitTest.tools1.HTMLTestRunner import HTMLTestRunner import unittest discove ...

  2. Java下如何保证多线程安全

    前言         可能有人会觉得,只要我写代码的时候不去开启其他线程,那么就不会有多线程的问题了.         然而事实并非如此,如果仅仅是一些简单的测试代码,确实代码都会顺序执行而不是并发执 ...

  3. ubuntu16登录后黑屏无法进入系统问题汇总

    今晚在使用虚拟机的过程中发现有些卡顿,顿时想给虚拟机增加内核数,然后,然后,,,我就再也没有看到过图形化界面,在某搜索引擎查找了半天,把我的问题汇总了一下发出来,希望对遇到同样问题的有所帮助. 出现黑 ...

  4. Python 爬取 ajax 返回的数据

    1 from urllib.request import quote, unquote 2 import random 3 import requests 4 5 #quote 将单个字符串编码转化为 ...

  5. Xshell 打开时,初始运行卡慢优化方法

    我使用的是Xshell 6免费版,有需要的同学可以去这个地址下载:https://www.netsarang.com/download/down_form.html?code=622 一开始安装完Xs ...

  6. JavaScript-编译与闭包

    编译原理 尽管 JavaScript 经常被归类为"动态"或"解释执行"的语言,但实际上它是一门编译语言.JavaScript 引擎进行的编译步骤和传统编译语言 ...

  7. Netty入门(二):Channel

    前言 Netty系列索引: 1.Netty入门(一):ByteBuf 2.Netty入门(二):Channel 在Netty框架中,Channel是其中之一的核心概念,是Netty网络通信的主体,由它 ...

  8. 大学同学做Java开发比我多5K,八年老Android只会crud该转Java吗?

    最近在网上看到这样一个帖子: 做了八年Android开发,感觉这块做着也挺没意思,日常工作就是做一些架构优化,质量数据监控,改一改构建脚本,最主要的是业务负责人没有一个是做客户端的,都是后端的人. 最 ...

  9. Nacos 权限控制介绍及实战

    方案背景 Nacos自开源依赖,权限控制一直需求比较强烈,这也反应了用户需求将Nacos部署到生产环境的需求.最新发布的Nacos 1.2.0版本已经支持了服务发现和配置管理的权限控制,保障用户安全上 ...

  10. CSS Flex布局完全指南 #flight.Archives002

    Title/CSS Flex布局完全指南 #flight.Archives002 序(from Ruanyf) : 网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模 ...