欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

sql 文件太大 如何用 python 打开 如何打开超大 sql 文件

最编程 2024-03-10 07:59:09
...


解决方案是使用十六进制编辑器编辑文件. Hex编辑器用于处理大型文件,甚至是整个磁盘和分区.

您可能会发现hexedit(基于ncurses)或ghex(基于Gnome / Gtk)非常有用.它们是常用的实用程序,因此您很可能会在发行版的repo中找到它们.

我使用过的所有十六进制编辑器都使用双面板视图,左侧面板以十六进制显示文件的字节,右侧面板尝试在可能的情况下显示Ascii表示.

为了查找和编辑您的第23行:

sed -n’23p’my_huge_dump.sql:将打印此行的内容
sed -n’23p’my_huge_dump.sql | od -A n -t x1:将以十六进制格式打印此行的内容.
或者使用less -N my_huge_dump.sql打开文件并查看第23行的内容.(-N in less enable行编号)

现在,知道第23行的内容:

>如果此行的文本有些独特且与周围的行不同,您可以从右侧(ascii)面板中找到它并使用箭头导航到此行.在hexedit中,使用Tab键在Hex和Ascii面板之间移动.在gHex中,您也可以使用鼠标.您也可以搜索您感兴趣的字符串:移动到Ascii面板并按/十六进制中的/或使用gHex中的菜单.

>如果要编辑的行与其他行具有相似的内容,并且您在ascii面板中找不到它,则必须计算“换行符”分隔符以查找第23行.新行(LF)以十六进制表示为0A.在ASCII面板中,新行表示为点.

然后假设您找到了要编辑的行,您有以下选项:

>希望第23行的新内容的长度与现有内容相比更短或相等(因此您不需要增长和移动整个文件).在这种情况下,您必须进入填充模式,即您覆盖旧文本的现有内容的模式.这是gHex和hexedit中的默认模式.移动到要编辑的位置并开始输入.按Backspace将撤消您的更改.如果新内容比现有内容短,则可以用空格填充该行以避免截断文件.

>如果新内容比此行中的现有内容长,则必须进入插入模式.您可以使用gHex中的菜单执行此操作.在hexedit中,您必须使用EscI键绑定.然后开始输入,新字符将附加在当前位置.

在第一种情况下,保证文件的编辑和保存将是即时的,因为将进行就地编辑.在后一种情况下,我不确定如何处理大小的增长和后续字节的移动,但我希望文件系统使用更大的非连续块来移动一些内容而不是移动整个文件.

如果您对更改感到满意,请保存文件:

>使用gHex中的菜单

>在hexedit中使用Ctrlx并在询问是否保存更改时回答(Y)es.

始终确保备份到位!

编辑:我发现gHex不适合你的情况,因为它试图将整个文件加载到内存中. hexedit会很好.但是,如果您需要像gHex这样的图形编辑器,但具有部分文件加载功能,则可以尝试wxHexEditor.另请查看Wikipedia中的Comparison of Hex editors页面.