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. 【贪心+排序】凌乱的yyy / 线段覆盖 luogu-1803

    题目描述 现在各大oj上有n个比赛,每个比赛的开始.结束的时间点是知道的. yyy认为,参加越多的比赛,noip就能考的越好(假的) 所以,他想知道他最多能参加几个比赛. 由于yyy是蒟蒻,如果要参加 ...

  2. Charles抓包工具永久破解+https抓包需要安装安全证书+防止请求乱码

    1.charles4.5.6版本安装+永久破解 链接:https://pan.baidu.com/s/1Z49AE6TG2IXUY-7qoyGU4g 提取码:3i97 安装好charles之后,把下载 ...

  3. 【论文集合】机器翻译NMT中数据打分和数据选择的经典方法

    根据Survey of Data-Selection Methods in Statistical Machine Translation的总结,MT中的数据选择分类图如下: 使用场景 数据使用的场景 ...

  4. 深入刨析tomcat 之---第9篇 how tomcat works 第9章,Session的实现 关于request.setContext(context)

    writedby 张艳涛,在学第9章session的时候,做了个实验在给的demo代码中添加了 package com.zyt.tomcat.ex09.core; public class Simpl ...

  5. kivy里rgb,rgba颜色相关知识,以及支持十六进制颜色值方法

    rgb,rgba在kivy里的格式为如下: rgb:1,1,1---->每个参数为0-1的数值(如0.1),也就是说第一位如果是0.1意思是10%的红色,由r代表,g代表绿色,b代表蓝色 rgb ...

  6. 组合数取模(lukas)板子

    求 C(n,m)%mo #include<bits/stdc++.h>#define re register int#define mo 10007#define ll long long ...

  7. 04.委托Delegation

    1. 基本了解 1.1 委托简述 官方文档 委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用,用于将方法作为参数传递给其他方法,可将任何可访问类或结构中与委托类型匹配的任何方法分配给委 ...

  8. Java流程控制04——Switch选择结构

    switch 多选择结构 switch case 语句判断一个变量与一系列值中某个值是否相等,每个支撑位一个分支. switch语句中的变量类型可以是: byte short int 或者 char ...

  9. VMware 安装 Centos 7 虚拟机配置网络

    在 Windows 机器上如果想使用 Linux 环境,最方便的方式莫过于使用虚拟机,最常用的软件各位肯定也不陌生,大名鼎鼎的 VMware . 不过这玩意有点稍稍不是那么智能,每次安装 Linux ...

  10. 中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂(上)

    前言 当下,正面临着近几年来的最严重的互联网寒冬,听得最多的一句话便是:相见于江湖~.缩减HC.裁员不绝于耳,大家都是人心惶惶,年前如此,年后想必肯定又是一场更为惨烈的江湖厮杀.但博主始终相信,寒冬之 ...