解析xml并且导入mysql
https://www.zhihu.com/question/28139319
解析超过500G的xml 写入mysql,如何尽快写入?
解析超过500G的xml 写入mysql,如何尽快写入?
1. 用最笨的方法逐行解析写入,好几天不见完。
2. 合并insert value,没100条进行事务写入,还是很慢。
有什么好的建议能尽快将数据导入数据库?
4 个回答
1个xml解析线程,N个insert线程(建议N=32),生产者-消费者模型
每条insert语句插入多条记录
方法(二)
解析xml文件,根据取模写到100个文件中
100个load data infile
读取xml就用一个thread好了,反对上面说多线程读的方案,你的硬盘只有一个读入点,并行读有什么好处?
然後把xml丢到一个pool里去解析xml,每解析一个就丢到存储db的pool里。
根據我的知识,你分多个表是沒有意义的,连续写入一定比random写入快很多阿。
还有,先去掉所有的index,全写完再加回来。
知乎用户 build mind, build world!有两种方案
- 可以用解析生成insert batch 语句,再来执行这些语句。
- 解析组装成对象集合,再按阈值进行批量插入。(堆要开大)
以偶的实践来看
- 解析倒不是问题。(2G xml 的解析2-3min) i5 8G
- 性能点是数据库,一定要把索引建好。
如果你的xml 不是特别复杂。可以参照如下脚本分割成100m一个的文件来操作:
shell script:
split -C 100m [filename]
分成多个小型XML, 分开单线程读。照最上方的方案。
解析xml并且导入mysql的更多相关文章
- 解析csv数据导入mysql的方法
mysql自己有个csv引擎,可以通过这个引擎来实现将csv中的数据导入到mysql数据库中,并且速度比通过php或是python写的批处理程序快的多. 具体的实现代码示例: 代码如下: load d ...
- Java中实现SAX解析xml文件到MySQL数据库
大致步骤: 1.Java bean 2.DBHelper.java 3.重写DefaultHandler中的方法:MyHander.java 4.循环写数据库:SAXParserDemo.java ① ...
- python提取xml属性导入Mysql
xml文档来自ganglia-gmond端telnet localhost 8649产生出来的文档,由于ganglia每隔一段时间就更新数据,为了永久保存数据到MySQL中,就用python写了最开始 ...
- SpringMVC文件上传 Excle文件 Poi解析 验证 去重 并批量导入 MYSQL数据库
SpringMVC文件上传 Excle文件 Poi解析并批量导入 MYSQL数据库 /** * 业务需求说明: * 1 批量导入成员 并且 自主创建账号 * 2 校验数据格式 且 重复导入提示 已被 ...
- javaEE学习笔记-利用DOM4J解析xml至数据库
xml代码文件名:test02.xml <ACCESOS> <item> <SOCIO> <NUMERO>00045050</NUMERO> ...
- XML基础+Java解析XML +几种解析方式的性能比较
XML基础+Java解析XML 一:XML基础 XML是什么: 可扩展的标记语言 XML能干什么: 描述数据.存储数据.传输(交换)数据. XML与HTML区别: 目的不一样 XML 被设计用来描述数 ...
- 导入libxml.dylib用Google的GDataXML解析XML数据
1.用Google的GDataXML来解析XML数据,导入libxml.dylib 2.导入libxml.dylib的操作实现,一开始自己总是找不到libxml.dylib文件. 选择其他文件,到路径 ...
- java使用sax解析xml
目的:解析xml文件,并存入mysql,并且要解析的字段能一一对应.这里解析的是微博的文件,想要利用里面的article和person_id字段. 思路: 为了能得到person_id和article ...
- CSS控制XML与通过js解析xml然后通过html显示xml中的数据
使用CSS控制XML的显示 book.css bookname{ display:block;color:Red} author{ display:block;font-style:italic} p ...
随机推荐
- 常见的java类
String System StringBuilder Thread Math ArrayList LinkedList HashMap HashSet Scanner Calendar Date F ...
- Ubantu Linux 环境下编译c++程序
先在文件中新建一个a.cpp文件,在里面编写程序, 然后打开终端输入下面命令即可; $ g++ a.cpp -o b ///编译a.cpp 然后把编译之后的.exe文件存入b中 $ ./b ///执行 ...
- LeetCode Plus One Linked List
原题链接在这里:https://leetcode.com/problems/plus-one-linked-list/ 题目: Given a non-negative number represen ...
- Python之路-(Django进阶二)
model: 双下划线: # 获取个数 # # models.Tb1.objects.filter(name='seven').count() # 大于,小于 # # models.Tb1.objec ...
- 使用MSMQ 远程队列
------------------------------------------------------------------------------------------------- -- ...
- Andorid项目创建AVD时,OK按钮无法点亮
经上网查证,发现原因在于CPU/ABI选项无法选择,并显示“No system images installed for this target”,也就是没有适合的系统镜像,通过与安装好了的ADT-b ...
- CAS学习笔记(二)—— cas server端的login-webflow详细流程
一.配置文件介绍 关于spring的配置信息只需放入WEB-INF/spring-configuration目录即可,cas启动时会自动加载.这个目录下的spring配置文件几乎不需要改动. 在web ...
- android aidl
参考: http://blog.csdn.net/u014614038/article/details/48399935 本文提供了一个关于AIDL使用的简单易懂的例子,分为客户端和服务端两部分,分别 ...
- web分享QQ好友、QQ空间、新浪微博的api接口
QZone: "http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url={{URL}}&title={{TITL ...
- struts 国际化
国际化 1. 国际化与本地化 国际化 (Internationalization: I18N): 是程序在不做任何修改的情况下,就可以再不同的国家或地区和不同的语言环境下,按照当地的语言和格式习惯显示 ...


