.NET : 如何将大文件写入到数据库中

最近利用空闲时间自己在写一个文件备份工具,因为我磁盘上的很多文件很重要,例如很多PPT和讲义。所以需要经常备份,而且因为这些文件很多,所以需要增量备份。 我尝试用过windows自带的ntbackup工具,但感觉不是很爽。它不支持压缩备份,而且界面也有点复杂

最近利用空闲时间自己在写一个文件备份工具,因为我磁盘上的很多文件很重要,例如很多ppt和讲义。所以需要经常备份,而且因为这些文件很多,美国空间,所以需要增量备份。

我尝试用过windows自带的ntbackup工具,但感觉不是很爽。它不支持压缩备份,而且界面也有点复杂。

为了响应伟大领袖的“自力更生,丰衣足食”的号召,咱决定自己写一个工具,专门备份到数据库。支持压缩,支持加密,支持增量。

本文分享一下其中一些重点的技术细节

其中一个关键的技术就是将文件使用二进制的方式存放在数据库的varbinary(max)的字段中。该字段最大允许的长度为2GB。

对于一些小文件,我们可以一次性读取它的所有字节,香港虚拟主机,然后一次提交到数据库

///

/// 这个方法演示了如何一次提交所有的字节。这样导致的结果是:应用程序立即需要申请等同于文件大小的内存
///

static void SubmitFileByOnce() {
    string file = @”F:功夫熊猫.rmvb”;//文件大小为519MB
    byte[] buffer = File.ReadAllBytes(file);
    using (SqlConnection conn = new SqlConnection(“server=(local);database=demo;integrated security=true”)) {
        using (SqlCommand cmd = conn.CreateCommand())
        {
            cmd.CommandText = “INSERT INTO Files(FileName,FileContents) VALUES(@fileName,@fileContents)”;
            cmd.Parameters.AddRange(
                new[]
                {
                    new SqlParameter(“@fileName”,file),
                    new SqlParameter(“@fileContents”,buffer)
                });

            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();
        }
    }
}

但是,上面的方法有几个问题,主要体现在如果文件比较大的话

1. 它需要一次性很大的内存,具体数据等同于文件大小。因为File.ReadAllBytes方法是将所有字节全部读入到内存。

2. 它会导致提交失败,就是因为数据太大了。数据库也会拒绝。

知网AI智能写作 知网AI智能写作

知网AI智能写作,写文档、写报告如此简单

知网AI智能写作 38 查看详情 知网AI智能写作

那么,我就对这个方法做了一下改进,将文件拆分为5MB一段,也就是说,此时每次申请的内存只有5MB。这就大大地提高了可用性。

///

  /// 这个方法是将文件切分为5MB的块,每次只是提交5MB,所以可能多次提交,但内存占用就比较小
  ///

  static void SubmitFileStepByStep() {
      string file = @”F:功夫熊猫.rmvb”;//以这个文件为例,大小为519MB,香港服务器,一共需要的时间大约94秒。还是有点慢的,所以还可能需要进行压缩
      FileStream fs = new FileStream(file, FileMode.Open);

      byte[] buffer = new byte[5 * 1024 * 1024];
      int readCount;
      using (SqlConnection conn = new SqlConnection(“server=(local);database=demo;integrated security=true”))
      {
          conn.Open();

          while ((readCount = fs.Read(buffer, 0, buffer.Length)) > 0)
          {

              using (SqlCommand cmd = conn.CreateCommand())
              {
                  cmd.CommandText = “INSERT INTO Files(FileName,FileContents) VALUES(@fileName,@fileContents)”;
                  cmd.Parameters.AddRange(
                      new[]
                  {
                      new SqlParameter(“@fileName”,file),
                      new SqlParameter(“@fileContents”,buffer)
                  });

                  cmd.ExecuteNonQuery();
              }

          }

          conn.Close();

      }
  }

这样的话,有一个后果就是一个文件,可能在数据库中会有多条记录。所以在读取的时候,我们需要对其进行合并

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/530351.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月9日 10:04:48
下一篇 2025年11月9日 10:08:31

相关推荐

  • css文件中引用图片不显示怎么办

    css文件中引用图片不显示的解决方法:1、确保图片路径书写正确;2、设置图片成块显示;3、指定图片的宽和高。正确代码如:【display:block;width: 25px;height: 21px;】。 解决思路: 1、确保路径正确 2、成块显示 3、指定宽高 立即学习“前端免费学习笔记(深入)”…

    2025年12月24日
    000
  • CSS怪异盒模型和标准盒模型如何使用

    这次给大家带来CSS怪异盒模型和标准盒模型如何使用,使用CSS怪异盒模型和标准盒模型的注意事项有哪些,下面就是实战案例,一起来看一下。 在html文档中,每个渲染在页面中的标签都是一个个盒子模型。 盒子模型又分为 : W3C标准的盒子模型 和 IE标准的盒子模型。 由于目前大部分主流的浏览器支持的是…

    2025年12月24日 好文分享
    000
  • HTML数据如何存储到数据库 HTML数据存储的技术方案比较

    直接存储原始HTML字符串最常见,适用于富文本编辑器输出等内容,实现简单、读取快,但需防范XSS和SQL注入;结构化JSON存储适合需程序化处理的场景,支持条件查询但渲染开销大;专用格式如Delta适用于协同编辑;分离存储则提升大型系统的查询性能与管理灵活性。 将HTML数据存储到数据库时,核心目标…

    2025年12月23日
    000
  • 如何创建HTML文件?用什么软件打开HTML格式?

    创建html文件需用纯文本编辑器编写符合规范的代码并保存为.html或.htm扩展名;2. 打开html文件可用任何现代浏览器直接渲染;3. 基本结构包括声明、根元素、 元数据区和内容区;4. 常见问题如文件扩展名错误、字符编码不匹配、路径错误、语法错误等可通过检查文件名、统一使用utf-8编码、验…

    2025年12月22日 好文分享
    000
  • 什么是内联HTML文件?如何查看HTML格式内容?

    内联html是嵌入在其他代码中的html片段,非独立文件,常用于动态更新内容或在非html文件中携带结构化信息;2. 与外部html文件相比,内联html随宿主文件加载、缓存依赖宿主、维护性较差且安全风险更高,而外部html适合大型项目、静态内容和seo;3. 内联html适用于动态ui更新、邮件模…

    2025年12月22日 好文分享
    000
  • 什么是标准的HTML文件?如何打开并查看HTML内容?

    要打开并查看html文件,最直接的方式是用浏览器双击文件以查看渲染效果,或用记事本、vs code等文本编辑器打开以查看源代码;2. 标准html文件应遵循w3c规范,基本结构包括声明、根元素、 头部(含charset、viewport、title等元信息)和主体内容区域;3. 查看网页源代码还可通…

    2025年12月22日 好文分享
    000
  • 数据库查询与HTML整合

    通过以下步骤,您可以将数据库查询结果整合到 html 页面中:建立数据库连接。执行查询并存储结果。遍历查询结果并将其显示在 html 元素中。 使用 PHP 将数据库查询与 HTML 整合 整合数据库查询结果和 HTML 页面可使您创建动态和交互式 Web 应用程序。本文将引导您完成使用 PHP 执…

    2025年12月22日
    000
  • 深入解析HTML如何读取数据库

    html 无法直接读取数据库,但可以通过 javascript 和 ajax 实现。其步骤包括建立数据库连接、发送查询、处理响应和更新页面。本文提供了利用 javascript、ajax 和 php 来从 mysql 数据库读取数据的实战示例,展示了如何在 html 页面中动态显示查询结果。该示例使…

    2025年12月22日
    000
  • html怎么读取数据库

    HTML 本身不具备直接读取数据库的能力,而是需要结合后端编程语言和数据库查询语言来实现。后端代码负责与数据库交互,从数据库中读取数据,并将数据嵌入到 HTML 页面中。这个过程通常涉及设置数据库、编写后端代码、将后端代码嵌入 HTML、配置服务器和访问网页。此外,前端 JavaScript 也可以…

    2025年12月22日
    000
  • 前端与后端的职责与技能要求

    前端与后端是软件开发中不可或缺的两个部分,它们分别承担着不同的职责和技能要求。本文将从职责和技能方面探讨前端与后端开发工程师的工作内容和要求。 一、前端工程师的职责及技能要求前端工程师负责实现用户界面和交互功能,直接面向用户,需要具备以下职责和技能要求: 实现网站或应用程序的用户界面设计,确保页面视…

    2025年12月22日
    000
  • 前端后端开发的发展历程与趋势展望

    随着互联网的迅猛发展和信息技术的日新月异,前端和后端开发作为两个重要的IT领域在过去几十年中也取得了巨大的进步。本文将探讨前端后端开发的发展历程,分析当前的发展趋势,并展望未来的发展方向。 一、前端后端开发的发展历程 早期阶段在互联网刚刚兴起的时期,网站开发主要关注内容的呈现,前端开发工作主要集中在…

    2025年12月22日
    000
  • 剖析前端和后端的技术差异

    前端和后端是软件开发中常见的两个领域,前端指的是用户界面和用户交互逻辑的开发,而后端则负责处理数据存储、逻辑处理和业务规则的实现。两者在技术上有着明显的差异,本文将从不同的角度来剖析前端和后端的技术差异。 首先,在技术栈方面,前端和后端使用的技术有很大的不同。前端常用的技术包括HTML、CSS和Ja…

    2025年12月22日
    000
  • 了解localstorage:它的数据库特点是什么?

    探究localstorage:它是一种什么样的数据库? 概述:在现代的Web开发中,数据的存储和管理是非常重要的一部分。随着技术的不断进步,新的数据库技术也不断涌现。其中之一就是localstorage。本文将介绍localstorage的概念、用途以及一些常用的代码示例,帮助读者更好地了解并使用l…

    好文分享 2025年12月21日
    000
  • 揭开localstorage的面纱:揭示它的真实本质和功能

    揭秘localstorage:究竟是什么样的数据库? 近年来,随着Web应用的快速发展,前端开发中涉及到数据存储的需求也越来越多。而localstorage作为一种前端数据存储的解决方案,备受广大开发者的关注和使用。那么,这个被称为“本地存储”的localstorage究竟是什么样的数据库呢?本文将…

    2025年12月21日
    000
  • 学习如何打开和使用localstorage文件的方法和工具

    了解localStorage文件的打开方式及工具,需要具体代码示例 在现代Web开发中,本地存储(localStorage)被广泛应用于保存用户的临时数据,以提供更好的用户体验。本地存储是浏览器提供的一种持久存储机制,可以将数据存储在用户的本地环境中,用户可以在多个会话中访问这些数据,而不受浏览器会…

    2025年12月21日
    000
  • 推荐一款用于打开localstorage文件的工具

    探索localstorage文件的打开工具推荐,需要具体代码示例 近年来,随着Web应用的普及和发展,localstorage文件的应用越来越广泛。localstorage是一种HTML5提供的一种本地存储解决方案,它允许Web应用在用户的浏览器中存储数据,而不需要依赖服务器。使用localstor…

    2025年12月21日
    000
  • 揭开localstorage的神秘面纱:深入探究这种数据库的特性

    解读localStorage:它到底是怎样的一种数据库? 概述: 在现代网页开发中,本地存储是一项非常重要的技术。其中之一就是localStorage(本地存储)技术。localStorage是一种在浏览器中储存数据的机制,它提供了一种简单的方式来存储和读取持久性数据。这种存储是基于浏览器的,而不是…

    2025年12月21日
    000
  • 揭秘localstorage:探索其真实本质

    深入了解localstorage:它到底是什么文件?,需要具体代码示例 本文将深入探讨localstorage是什么文件,并提供具体的代码示例,帮助读者更好地理解和应用localstorage。 localstorage是一种用于在Web浏览器中存储数据的机制。它可以在用户的浏览器中创建一个本地文件…

    2025年12月21日
    000
  • 了解localstorage:揭开这个神秘文件的奥秘

    解密LocalStorage:揭秘这个神秘的文件究竟是什么? 随着互联网的发展,Web开发变得越来越普遍,人们的个人信息和数据也被广泛地存储在浏览器中。而其中一个神秘的文件是LocalStorage。那么LocalStorage究竟是什么呢?我们将在本文中解密LocalStorage的原理和使用方法…

    2025年12月21日
    000
  • 对localstorage的了解:你还只是看到了一小部分!

    localstorage:你对这种文件的了解还只是皮毛!,需要具体代码示例 简介:在现代Web开发中,持久性存储是非常重要的。有许多不同的方法可以实现持久性存储,其中之一就是使用本地存储技术。本地存储允许Web应用程序在浏览器中存储数据以供后续使用。在本文中,我们将详细介绍本地存储,并提供具体的代码…

    2025年12月21日
    000

发表回复

登录后才能评论
关注微信