10G的变态SQL文件,如何快速打开编辑?
工作中,偶尔需要编辑一些大文件,比如 log 文件,后者一些变态的 SQL,此时用平常的编辑器就会显得力不从心,要么直接打不开,要么打开后卡得要死。
本文就给大家推荐几款可以操作大文件的编辑器,准备好小板凳,开始吧。
本机配置:Windows10,16G 内存,i5 处理器。
Notepad++
第一站,就拿我本机的记事本替代者 Notepad++ 开刀。
网上传闻 Notepad++ 打开大文件不佳,Notepad++ 可以打开 600M 左右的文件,大于 700M 就直接无法打开了,一般 >400m 就会卡死。
那么它的真实体验如何呢?
于是就从服务器上,找来了一个 2.3G 大小的文件来进行测试。

将其拖到 Notepad++ 中,直接不行:

那我们拿一个小点的,200M 多点的文件再试一下
结果呢?

大家隔着屏幕,应该无法感受我在电脑前的感受
打开用了好几秒,打开后无法滚动,我的鼠标都快滑烂了

好不容易能上下拉了,没拉几下,还卡死了!
直接程序无响应了!
Notepad++ 是很优秀,但是在打开大文件方面,简直是一塌糊涂!
超过 100M 的文件,用 Notepad++ 打开时,请慎重!
Sublime Text
下面我们用很多人都喜欢的 Sublime Text 来试下。
首先,比 Notepad++ 好的地方是,2.3G 的文件起码是能打开的
没有报错

但是,Sublime Text 开始加载文件了

我大概计了个时
加载 2.3G 的文件,一共用了 4 分多钟
我就一直盯着加载页面
不过总算加载完了
正当我准备滑动我的鼠标查看文件时


再看一眼 Sublime Text 的内存占用情况

看得出来,它是一次性将文件全加载到内存中了
所以,Sublime Text 也是很优秀,但是打开大文件,同样一塌糊涂。
VSCode
编辑器界的新秀 VSCode 在大文件方面又能表现如何呢?
当我把文件拖入到 VSCode 时,弹出了如下提示

按照提示进行重启后,再次尝试打开文件

就一直处于加载中
加载一段时间后,又弹出了这个页面

后又多次尝试打开,均以失败告终

所以,VSCode 打开大文件,失败!
UltraEdit
现在再来试一下老牌的 UltraEdit,网上说它是可以打开大文件的,那我们就看下到底表现如何。

打开有了几十秒的时间,并且打开过程中卡死
但是打开后,文件浏览起来还是很顺滑的。
直接进行编辑好像也没什么问题
但是当我使用 ctrl+z 进行撤销操作,或者进行文件保存时
还是卡住了

我们发现,其实 UltraEdit 内存占用很小,这种情况下,仍然能够顺滑浏览大文件,难道是因为我的 SSD?
总之,UltraEdit 要比 Notepad++ 和 Sublime Text 表现要好多了。

EmEditor
好了,做了这么多铺垫,到了主角出现的时候了,它就是:EmEditor
EmEditor 是一个比较小众的编辑器,当年实习时,只有当年实习时看到指导老师用过,此后多年,没再看到过它的身影。
知乎上甚至还有一个问题:为什么用 EmEditor 的人不多?
回答者对其的评价颇高,有人甚至称其为:Windows平台下最棒的文本编辑工具!没有之一!




评价都是『幸存者偏差』,我们不过多关注,到底怎样,拉出来溜溜

1、加载大文件,没有出现卡死的情况;
2、浏览文件,同样顺滑;
3、编辑大文件,不费力气;
4、保存时,出现短暂卡死的情况;

总之,这是今天所有测试下来,大文件打开表现最优秀的一个。
总结
本文并没有比较各个编辑器的意图,所以对于各个编辑器的优劣不做评价。
本文只是实验在大文件编辑的情况下,到底谁的表现更为突出。
综合结论:EmEditor ≈ UltraEdit > Sublime Text ,VSCode 和 Notepad++ 无法打开大文件,不参与排名。
另外,也许还有其他更为优秀的工具,比如 Vim 其实也可以用来编辑大文件,小编认知有限,大家可以留言推荐。
10G的变态SQL文件,如何快速打开编辑?的更多相关文章
- MySQL(Navicat)运行.sql文件时报错:[Err] 2006 - MySQL server has gone away 的解决方法
背景: 今天导入一个数据量很大的.sql文件时,报错: 原因: 可能是sql语句过长,超过mysql通信缓存区最大长度. 解决:1. 编辑 MySQL 安装目录下的 my.ini,在最后添加以下内容: ...
- 针对大的sql文件删除行操作
今天处理开发已导出的库的一个sql文件.未gzip压缩 ,1.3G 需要删除 17 18 24行的SET行. 想到了两个办法 1 sed 方法 主意 由于 sed 虽然指定行 进行 替换, 也会读完 ...
- mysql导入.sql文件
1. source /home/susie ...../**.sql 2. \. /home/susie/.../**.sql 批量导入.sql文件 首先新建一个main.sql,然后在main.sq ...
- navicat如何导入sql文件和导出sql文件
http://jingyan.baidu.com/article/a65957f4976aad24e67f9b9b.html ************************************* ...
- 怎么将oracle的sql文件转换成mysql的sql文件
怎么将sql文件导入PowerDesigner中的方法(将oracle的sql文件转换成mysql的sql文件)呢? 怎么将xx.sql文件的数据库结构导入powerdesigner 的方法呢? 现讲 ...
- navicat导入sql文件
Hello,大家好.Navicat是我们平时使用较多的一个数据库客户端工具,平时小天我主要是用来连接mysql的,使用的时候还是很方便的. 今天小天我就给大家分享一个Navicat如何导入导出sql文 ...
- 【转】linux下使用sqlplus执行包含语句块的sql文件,运行时会不断显示行号,而在plsqldev中能执行
一.数据库:Oracle数据库 二.sql文件内容: --创建函数 CREATE OR REPLACE function fun_createuid1 return varchar2 is Resul ...
- 大型SQL文件导入mysql方案
一. 场景 现有俩个体积较大的单表sql文件,一个为8G,一个为4G,要在一天内完整导入到阿里云的mysql中,需要同时蛮子时间和空间这俩种要求. 二. 思路 搜索了网上一堆的方案,总结了如下几个: ...
- linux crontab定时任务运行shell脚本(shell执行sql文件)
https://www.cnblogs.com/tiankongjava/p/6106743.html 今天做个linux定时任务(每晚12点把表汇总). 顺便写个博客记录一下~~ 为什么用linux ...
随机推荐
- py+selenium 明明定位不到元素,但却不报错或是报错AttributeError: 'list' object has no attribute 'click'【已解决】
问题:定位不到元素,但却不报错或者出现报错AttributeError: 'list' object has no attribute 'click' 如图 或者 解决方法: 将”driver ...
- html+css-->background-img(背景图的设置)
背景图:(相关验证代码请查看代码,在验证时需将当前不需要验证的代码注释掉) 1.inherit:从父元素继承属性设置 2.background-repeat:平铺(在图片大小小于元素尺寸时 ...
- 微信小程序踩坑日记1——调用微信授权窗口
0. 引言 微信小程序为了优化用户体验,取消了在进入小程序时立马出现授权窗口.需要用户主动点击按钮,触发授权窗口. 那么,在我实践过程中,出现了以下问题. . 无法弹出授权窗口 . 希望在用户已经授权 ...
- MyBatis从入门到精通(十四):在MyBatis中使用类型处理器
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解在MyBatis中如何 ...
- 初学者的linux - 基本知识篇
1.Linux系统结构 Linux是一套免费使用和自由传播的类Unix操作系统,它是一种倒树结构. “/”就是系统的顶级目录,称作根目录,“/bin,/root,/home,/etc.."这 ...
- python中的*args和** kwargs区别
写了几个月的oython了总感觉除了if else for while什么都不太会,看了架构师的代码参数传递总是使用*args,**kwargs,一直搞不太明白,只是模仿着用,最近有时间想系统的学习一 ...
- 小白开学Asp.Net Core 《十》
小白开学Asp.Net Core <十> — — Session.Cookie.Cache(老生常谈) 一.背景 在常谈Session和Cookie之前我们先来简单的了解下Http(可以说 ...
- 跟着大彬读源码 - Redis 7 - 对象编码之简单动态字符串
Redis 没有直接使用 C 语言传统的字符串表示(以空字符串结尾的字符数组),而是构建了一种名为简单动态字符串(simple dynamic string)的抽象类型,并将 SDS 用作 Redis ...
- JavaScript的面向对象原理之原型链
二.JavaScript的对象 为了能够清楚的解释这一切,我先从对象讲起.从其他面向对象语言(如Java)而来的人可能认为在JS里的对象也是由类来实例化出来的,并且是由属性和方法组成的. 实际上在JS ...
- 使用ForkJoinPool来多线程的拆分任务,执行任务,合并结果。
ForkJoinPool 是jdk1.7 由Doug Lea 写的实现 递归调用任务拆分,合并,的线程池. 代码示例: package www.itbac.com; import com.alib ...