10万+条Json数据写入到数据库

有趣 专栏收录该内容
7 篇文章 0 订阅

10万+条Json数据写入到数据库

101254条数据据耗时近10分钟(5677368毫秒)终于插入到数据中了,咳咳,不要问我这10万多条数据从哪儿弄的(当然是从别人网站那了),能一次性或得到这10万多条数据也真不容易啊,等得我都没什么耐心了

苦逼尝试1

一开始想的是,将这10万多条数据分页查询然后插入到数据库中,于是写了一个循环,准备不断访问那个网站分页获得数据;,但由于不能保证每次都能成功请求数据,于是后来就手动的访问该网站,成功插入数据库后,再访问下一页的数据,我竟然傻傻的访问了203次……但由于部分数据,数据库已经插入过了,所以当再次插入的时候就会catch到异常,所以到最后大概有1000+的数据没有成功插入到数据库中,但从这10万+的数据中找到哪些数据没有插入到数据库中,那得累死我……太坑爹了

苦逼尝试2

打算写个多线程,然后当一个子线程成功获取到json数据后,再成功写入到数据库中后,再开一个线程去访问下一页的数据,依次到访问完这10万+数据,哎,只能怪自己太笨了……写了一顿……竟然没成功……

苦逼尝试3

我想一次性的获得到这10万+的json数据,然后将这些数据都插入到数据库中,但存在的问题有以下几个:

  • 1.因为是json格式数据,需要将所有的数据都接收到后,再进行解析。
  • 2.因为是10万+的json数据,光网络访问获得就需要很长时间,当时花了我近30分钟的时间才在网页中获得全这10万+的json数据
  • 3.将这10万+的数据加载到内存中,也很耗时,会卡死你
  • 4.文件输入输出流更耗时间、内存及CPU

以上是我在多次尝试中遇到的多个问题

我花了近半小时的时间在网页上获得到了10万+的数据,然后复制到记事本中,保存成utf-8编码的,文件大小就45M多了。电脑配置低了可真不行,光用代码读取这个文件就把我的MyEclipse累的要死要死的了。

我希望通过优化我的文件输入输出流读取模块代码,来减轻对硬件的损耗,但是因为Json格式数据,数据必须要保证完整性,才能被解析,这是上面遇到的问题,所以将数据进行切割的方式就算是走到头了。

最后受到浏览器对纯文本文件可以直接解析读取数据,所以我将我的json数据文件放到了tomcat下面发布后,再网页中访问,查看一下效果,果然,在10秒左右基本就能加载完12016/6/2 18:13:09 2016/6/2 18:13:12 0万+数据,用Java代码获取自己发布的数据具体就不太清楚用了多长时间了,因为我只测试了从访问开始到全部插入成功所用的时间一共用了5677368毫秒(近10分钟)成功插入到数据库中###(前面用读文件的方式读半小时都没能成功……)

尝试思路:

可以只解析数组中的数据,因为主要就是数组中的数据,只需要把数据的头尾部分删掉,保证json格式的正确性,然后通过逗号然后将数组中的数据分隔开,这样就可以将JSON数据进行分割了,然后就可以一次性的少加载一些数据到内存中了,这样配置哪怕不是很高的电脑应该也可以轻松解决了

10万+json数据下载    访问密码 dfa8

这个是那个网络请求数据 http://www.tngou.net/api/cook/list?page=1&rows=20   
page表示请求的第几页,rows表示每页多少条数据;大家可以请求一下,一共有101254条数据;

有谁有更好的解决方法,请发我邮箱1072307340@qq.com,谢谢。

  • 2
    点赞
  • 4
    评论
  • 4
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 4 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:程序猿惹谁了 设计师:我叫白小胖 返回首页

打赏作者

zml_2015

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值