mysql 读取文件_关于mysql:逐行读取文件而不将整个文件加载到内存中

我正在使用50 Gb MySQL导出文件,并对其执行脚本操作列表以转换为SQLite3可加载形式(我从这里得到的线索:脚本将mysql dump sql文件转换为可以导入sqlite3的格式D b )。我尚未研究MySQL转储的结构,数据是从第三方获得的。我可以看到它具有创建表并插入到语句中的功能,但是鉴于其大小,很难手动阅读并理解其结构。

由于大小原因,无法通过管道传输文件。还有一个bash脚本,用于加载文件,然后逐行处理,例如

while read line

抱怨说它的内存不足。

因此,我尝试使用awk或sed来选择每一行(两者均起作用),将该行写入文件,然后将其通过perl脚本列表。这是我正在使用的awk脚本

$ awk -vvar="$x" 'NR==var{print;exit}' file > temp

其中x保留行号,然后通过perl命令发送temp,最后将它们附加到输出文件中。

但是,尽管最初速度很快,但是由于开始必须遍历越来越多的行,因此它很快会变慢。大约有40,000行。

有没有人像这样工作?有更快的方法吗?

为什么脚本必须遍历越来越多的行?我猜您没有40000个文件,每个文件仅包含一行,但是您能否提供更多详细信息?

命令$ sed -n 10 {p; q} file,将读取前9个,并给我第10行并退出sed。随着数量增加到40,000,它必须遍历更多行才能给我特定的行。

好的,我知道了。是否可以选择先将文件分割成50个1Gb文件?然后对每个块进行处理,最后再次加入这些块。

我在超级计算机上可以拥有的文件数量受到限制,因此尽管50个文件太多,我还是可以尝试获得一个最大数量的文件,该数量将好于1个。谢谢您的指导。

也许您也可以发布正在使用的脚本? (如果很大,您可以尝试将其上传到pastebin.com并在此处提供链接)。

如果您给出了所需的MySQL导出数据和SQLite3可加载格式的示例,那么这似乎是一个更多人可以帮助的问题。我假设您希望从输入中读取的每一行MySQL都输出一行SQLite数据?您链接到的解决方案对我来说似乎很可怕,而且我相信它可以用单个Perl程序编写。

您正在MySQL中执行SELECT * FROM table INTO OUTFILE table.txt,然后在SQLite中执行.import table.txt table?

我还没有编写MySQL转储,也没有完全按照文件的大小来遵循结构。该问题已更新以反映这一点。此外,尽管sqlite3仍然抱怨格式,但建议将文件拆分为脚本有效。谢谢!

一次只需处理一行:

while read -r line

do

echo"$line"> temp

…process temp with Perl, etc…

done < file

至少这不会表现出二次读取文件的行为,这就是您的awk脚本所做的。

它只读取一次大文件,这是Big-O表示法的最佳性能(在恒定因子内)。

如您所说,如果这导致bash出现问题,则应使用Perl读取每一行。 在50 GiB数据中有40,000行,您大约有1个? 每行数据的MiB。 尽管可能会导致Bash问题,但这不太可能导致Perl出现任何问题。 您可以修改现有的Perl一次读取一行,也可以使用简单的包装Perl脚本来完成上述Bash脚本的工作。

wrapper.pl

假设您当前的处理脚本称为script.pl:

#!/usr/bin/env perl

use strict;

use warnings;

my $file ="temp";

while (<>)

{

open my $fh,">", $file or die;

print $fh $_;

close $fh;

system"perl","script.pl", $file;

}

未经测试的代码

调用:

perl wrapper.pl output

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489038.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python深浅拷贝 面试_Python面试宝典之基础篇-02

原标题&#xff1a;Python面试宝典之基础篇-02我觉得你如果正在找工作&#xff0c;我的Python面试宝典几期教程&#xff0c;你一定得花时间看完了&#xff01;题目006&#xff1a;说说Python中的浅拷贝和深拷贝。点评&#xff1a;这个题目本身出现的频率非常高&#xff0c;但是…

磁盘挂载基本概念

基本概念PV( 全称 Physical Volume , 物理卷):普通的直接坊问的存储设备&#xff0c;有固定的和可移动的之分&#xff0c;代表性的就是硬盘 VG(全称 Volume Group,卷组):AIX中最大的存储单元&#xff0c;一个卷组由一个或多个PV组成 PP(全称 Physical Partition,物理分区):将PV…

数字孪生白皮书(2019)

▲ 赛迪工业互联网首席研究员袁晓庆博士发布报告来源&#xff1a;赛迪智库以下是白皮书主要内容的PPT&#xff1a;&#xff08;点击放大观看&#xff09;123456789101112131415161718192021222324252627282930未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&…

java手动线程池使用_Java手动配置线程池过程详解

线程池中&#xff0c;常见有涉及到的&#xff1a;ExecutorService executorService Executors.newSingleThreadExecutor();ExecutorService executorService1 Executors.newCachedThreadPool();ExecutorService executorService2 Executors.newFixedThreadPool(3);关于Execu…

BZOJ 1492: [NOI2007]货币兑换Cash [CDQ分治 斜率优化DP]

传送门 题意&#xff1a;不想写... 扔链接就跑 好吧我回来了 首先发现每次兑换一定是全部兑换&#xff0c;因为你兑换说明有利可图&#xff0c;是为了后面的某一天两种卷的汇率差别明显而兑换 那么一定拿全利啊&#xff0c;一定比多天的组合好 $f[i]$表示第$i$天最多能得到的钱…

集水井盖板图集07fj02_【干货】住宅通病详细图集(图文详解)

工序节点1建筑物外墙与散水坡、台阶、明沟留沉降缝图示&#xff1a;要求与做法&#xff1a;1、散水坡、台阶、明沟本身按≤6m长度(总长度均分)留沉降缝。2、外墙阴阳角位按450角留沉降缝。3、散水坡与台阶交接处留沉降缝分隔。工序节点2室外地面 伸缩缝图示&#xff1a;要求与…

最新发布!北京市机器人产业创新发展行动方案(2019-2022) “5432”推动北京机器人产业高质量发展...

来源&#xff1a;机器人大讲堂各有关单位&#xff1a;为贯彻《北京市加快科技创新发展智能装备产业的指导意见》&#xff0c;推动北京市机器人产业高质量发展&#xff0c;现将《北京市机器人产业创新发展行动方案&#xff08;2019—2022年&#xff09;》印发给你们&#xff0c;…

php png 输出,PHP直接输出一张图片代码写法

示例代码&#xff1a;public function img(){$img "https://file.zyku.net/p/b197f42c06ffff2e03bfbacee4ce94c4.jpg";$info getimagesize($img);$imgExt image_type_to_extension($info[2], false); //获取文件后缀$fun "imagecreatefrom{$imgExt}";$…

判别分析分为r型和q型吗_电流互感器天天见,但是你真正了解和知道它的一些注意事项吗?...

电流互感器也许你天天见&#xff0c;但是你真正了解电流互感器和它的一些注意事项吗&#xff1f;今天我就带大家一步步分析下电流互感器。一&#xff0c;定义&#xff0c;什么是电流互感器&#xff1f;电流互感器是根据电磁感应原理将一次侧大电流转换成二次侧小电流来测量或计…

LintCode 373: Partition Array

LintCode 373: Partition Array 题目描述 分割一个整数数组&#xff0c;使得奇数在前偶数在后。 样例 给定[1, 2, 3, 4]&#xff0c;返回[1, 3, 2, 4]。 Thu Feb 23 2017 思路 简单题&#xff0c;可以很自然地想到再用一个答案数组&#xff0c;从头到尾遍历一遍&#xff0c;遇到…

刚刚,Science发布2019十大科学突破!

来源&#xff1a;中国生物技术网 北京时间12月20日&#xff0c;《Science》公布了今年的十大突破。“直视”黑洞图片来源&#xff1a;UNIVERSITY OF ARIZONA/INSTITUTE FOR ADVANCED STUDY图片来源&#xff1a;EHT COLLABORATION/CC 4.0巨大的、无处不在的黑洞&#xff0c;在某…

nginx php分离,nginx-php配置动静分离

实验目的&#xff1a;nginx-php配置动静分离实验环境&#xff1a;主机 192.168.88.100 NGINX服务器主机 192.168.88.102 PHP和MYSQL服务器注意&#xff1a;想要手工编译必须安装gcc gcc-c make 这三个插件并且关闭防火墙service firewalld stopsystemctl disable firewalld1.在…

用python分析小说_用Python对哈利波特系列小说进行情感分析

原标题&#xff1a;用Python对哈利波特系列小说进行情感分析准备数据现有的数据是一部小说放在一个txt里&#xff0c;我们想按照章节(列表中第一个就是章节1的内容&#xff0c;列表中第二个是章节2的内容)进行分析&#xff0c;这就需要用到正则表达式整理数据。比如我们先看看 …

模仿u-boot的makefile结构

u-boot&#xff08;2014.04&#xff09;是通过顶层makefile调用各子目录中的makefile来实现整个工程的编译的&#xff0c;实际上子目录的makefile是include进来的。这里仿照这种结构写个模板测试一下。 目录结构&#xff1a; mytest&#xff1a; add&#xff1a; mul&#xff1…

我国机器视觉企业体量偏小,上游零部件占利润大头

来源&#xff1a;仪商网根据中国机器视觉产业联盟(CMVU)调查统计&#xff0c;目前进入中国市场的国际机器视觉企业和中国本土的机器视觉企业(不包括代理商)都已经超过200家&#xff0c;产品代理商超过300家&#xff0c;专业的机器视觉系统集成商超过70家&#xff0c;覆盖全产业…

php 后端 轻量 框架,GitHub - 22cloud/mixphp: 轻量 PHP 框架,基于 Swoole 的常驻内存型 PHP 高性能框架 (开发文档完善)...

高性能 • 轻量级 • 命令行MixPHP 是什么MixPHP 秉承 "普及 PHP 常驻内存型解决方案&#xff0c;促进 PHP 往更后端发展" 的理念而创造&#xff0c;采用 Swoole 扩展作为底层引擎&#xff0c;围绕常驻内存的方式而设计&#xff0c;提供了 Web / Console 开发所需的众…

技术面试问项目难题如何解决的_技术创新 | 降本增效,青海农信社项目小伙刻苦钻研解决联合支架设计难题!...

革新READ随着建筑技术的进步&#xff0c;建筑内部功能和机电系统越来越多样&#xff0c;带来机电管线的数量成倍增加。为节约建筑空间&#xff0c;提高建筑净高&#xff0c;保证系统功能&#xff0c;提升履约品质&#xff0c;越来越多的项目选择采用联合支架的形式将各类管线集…

MYSQL四

-- ########## 01、ER关系 ##########-- ER关系&#xff08;逻辑描述&#xff09; -- A&#xff1a;E---Entity简写&#xff0c;实体&#xff0c;具有相同属性&#xff08;特征&#xff09;的对象归为同一实体 -- Attribute属性&#xff0c;描述实体具有的特征&#xff…

AI研究过于集中狭隘,我们是不是该反思了?

来源&#xff1a;AI科技大本营译者 | 陆离编辑 | 夕颜【导读】2019年是AI领域更加冷静的一年&#xff0c;少了些喧嚣和泡沫&#xff0c;大浪淘沙留下的是经过检验的真正的AI研究者、实践者。但是你也许没有发现&#xff0c;本来被寄予厚望要解决一切“疑难杂症”的AI&#xff0…

svchost占用内存过高_是什么导致你的Java服务器内存和CPU占用过高呢

一、内存占用过高1、造成服务器内存占用过高只有两种情况&#xff1a;内存溢出或内存泄漏(1)内存溢出&#xff1a;程序分配的内存超出物理内存的大小&#xff0c;导致无法继续分配物理内存&#xff0c;出现OOM报错。(2)内存泄漏&#xff1a;不再调用的对象一直占用着内存不释放…