如何处理百万条数据写入到数据库-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

如何处理百万条数据写入到数据库

2016-06-17 15:37:09 2249 1

在一个文本文件里存了一百万条数据,一行一条,

我需要把符合条件的每一行数据写入到数据库里,

按照以前的做法就是读取文件里的数据,然后存入数组,然后foreach数组进行一条一条的处理(符合条件的写入到数据库),

但是面对上百万条数据,如果我再继续这样做看来是自寻死路,可是处理大数据真是大姑娘我坐花轿可是头一回,一点经验也没有,

从网上找资料说用php进程/线程来解决,我对进程与线程是一头污水,请大牛们进来分享一下这方面的经验,是怎么处理大数据的,如果通过进程/线程又是怎么实现的呢?

取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:42:55

    用 shell 将一千万行文件切分成 100 个文件,这样每个文件有10万行,具体做法可以 man split。
    写 php 脚本,脚本内容是读一个文件,然后输出有效的数据。注意数据格式,严格按照表中字段的顺序来写,字段之间用半角分号隔开,行之间用 n 隔开。具体参数可配置,参见 MySQL 的 load data 命令参数。注意是 php cli 方式运行的,不要拿 Apache 或者 其他 web server 下面跑这个东西。如果按行读不知道怎么搞可以直接用 php 的 file() 函数,生成的 sql 语句通过 error_log($sql, 3, "/path/to/dataa") 函数写入到文件中。同时可以 echo 一些调试信息,以备后续检查。
    写 shell 脚本调用 php 处理日志.脚本可以类似来写
    /path/to/php/bin/php -f genMySQLdata.php source=loga out=dataa > /errora.log & /path/to/php/bin/php -f genMySQLdata.php source=logb out=datab > /errorb.log & /path/to/php/bin/php -f genMySQLdata.php source=logc out=datac > /errorc.log & ....重复一百行,机器配置低可以分批写,每个写 10 行也行。这个脚本内容很有规律吧,本身也可以用 php 来生成。时间又省了。 在机器上执行这个 shell 脚本,实际上就启动多个 PHP 进程来生成数据。配置够牛的话,就等于你启动了 100 个 PHP 进程来处理数据。速度又快了。
    继续写 shell 脚本,内容是打开 MySQL 用 load data 来载入数据。
    mysql -h127.0.0.1 -uUser -ppwd -P3306 -D dbname -e 'load data infile "/path/to/dataa" into table TableName(Field1, Field1, Field1);' 其中的 field1 ... 要跟生成数据的顺序对应,这个命令可以直接执行,也可以放到 shell 里面重复写 N 行,然后执行 shell 脚本。

    0 0
相关问答

1

回答

流处理任务失败该如何追回之前的数据

2021-12-03 09:54:48 379浏览量 回答数 1

1

回答

数据库中什么操作应该避免,避免不了如何处理?

2021-03-08 21:46:11 229浏览量 回答数 1

1

回答

如何处理因脏数据导致任务失败的情况?

2020-03-21 09:28:05 4032浏览量 回答数 1

1

回答

流处理框架与数据库

2018-12-10 13:28:00 1355浏览量 回答数 1

1

回答

该如何处理

2018-02-15 09:34:50 458浏览量 回答数 1

1

回答

如何写入数据

2017-10-24 17:20:34 1721浏览量 回答数 1

0

回答

OpenSearch的数据如何处理?

2017-10-25 10:58:32 2252浏览量 回答数 0

1

回答

数据库连接问题,请问如何处理,谢谢!

2016-09-21 20:03:44 1556浏览量 回答数 1

3

回答

数据库集群的性能

2016-02-14 16:39:10 3294浏览量 回答数 3

2

回答

快照回滚后,数据库不运行了,请问应该怎么处理

2015-11-02 11:31:28 7886浏览量 回答数 2
+关注
0
文章
14879
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载