php读写xml文件,另辟蹊径 搞定PHP读取XML大文件 数据导入
由于工作原因,不得不与一个二逼团队合作,
我说直接导出SQL文件给我就好了,而他们坚持要导出XML文件。
或者他们有他们的原因吧,但我还是要叫他们二逼团队,懒得了解他们有什么苦衷。
我想MySQL应该是支持导入XML的话,搜索的结果是什么我忘了。
反正我最后决定还是自己写一段PHP来生成SQL语句。
XML数据结构大概是这样子的:
文件很大,有很多,也就是很多记录,但是单个记录里的数据并不大。
PHP里关于XML的操作有很多类和函数。
详见:http://php.net/manual/zh/refs.xml.php
其中常用的应该是XMLReader、SimpleXML(纯属个人感觉,并没有数据支持)
XMLReader是以文件流的方式 一句一句读取,主要用来处理体积很大的XML文件,但用起来比较麻烦。
SimpleXML用起来则便捷了许多,但它没办法处理很大的XML数据。
刚开始我只用XMLReader来导入,当然也是可以导入的,但是嵌套了好几层循环和判断。
要不是后来又要导入一批数据,我几乎以为只能这样写了。
第二次导入的时候,我采用的方法是结合XMLReader和SimpleXML,
因为不管你XML文件再怎么大,单条记录的数据能大到哪里去?(我说的是一般情况)
想到这个方法之后,于是代码就简洁到 我都不好意思发出来的程度了。
但是为了让这篇文章的读者 对这种简洁有个更直观的感受,我还是厚着脸皮发一下吧:
$xml = new XMLReader();
$xml->open(__DIR__ . '/company.xml');
while($xml->read()) {
if($xml->name=='object' and $xml->nodeType==XMLReader::ELEMENT) { // 进入 object
$inXml = $xml->readOuterXML(); // 获取当前整个 object 内容(字符串)
$inXml = simplexml_load_string($inXml); // 转换成 SimpleXMLElement 对象
// 然后没有了 就这么简单 具体怎么保存到数据库 dump 一下 $inXml 你就懂了
var_dump($inXml);
}
// 继续读取 直到进入下一个 object
}
就是这样了,如果你还在为XMLReader太难用,SimpleXML搞不定大文件,而苦苦搜寻“php xml 操作类 大文件”,这篇文章的思路应该就是你需要的。
php读写xml文件,另辟蹊径 搞定PHP读取XML大文件 数据导入相关推荐
- python读取matlab数据_两分钟搞定Python读取matlab的.mat数据
Matlab是学术界非常受欢迎的科学计算平台,matlab提供强大的数据计算以及仿真功能.在Matlab中数据集通常保存为.mat格式.那么如果我们想要在Python中加载.mat数据应该怎么办呢?所 ...
- matlab读取.mb15格式数据,两分钟搞定Python读取matlab的.mat数据
Matlab是学术界非常受欢迎的科学计算平台,matlab提供强大的数据计算以及仿真功能.在Matlab中数据集通常保存为.mat格式.那么如果我们想要在Python中加载.mat数据应该怎么办呢?所 ...
- 一款好用的JS插件xm-select【只需要引用一个JS文件就搞定】
一款好用的JS插件xm-select[只需要引用一个JS文件就搞定] 先上js代码:复制保存直接用 !function(e){var t={};function n(o){if(t[o])return ...
- [Qt教程] 第27篇 XML(一)使用DOM读取XML文档
[Qt教程] 第27篇 XML(一)使用DOM读取XML文档 楼主 发表于 2013-5-21 21:14:28 | 查看: 1001| 回复: 14 使用DOM读取XML文档 版权声明 该文章原创 ...
- linux dd 截文件,Linux使用dd命令快速生成大文件(转)
dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero ...
- java读取excel大文件
在读取excel大文件的时候就不能再使用poi包下面的Workbook类,会造成OOM等问题. 我们常见的excel分为xlsx格式和csv格式.分别实现一下. xlsx格式处理. 需要的pom依赖: ...
- Linux dd命令截取文件,linux使用dd命令快速生成大文件
dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero ...
- kettle将多个文件压缩_如何使用WinRAR将一个大文件压缩成多个小的压缩包
目录 1.使用WinRAR将一个大文件压缩成多个小的压缩包 2.使用WinRAR将多个小的压缩包,解压/合并成一个大文件 3.结尾 / 在现实生活中,受文件大小的限制,在传输的过程往往出现困难,如:邮 ...
- php读取csv指定行_PHP快速读取CSV大文件指定行
1.如何快速获取CSV大文件的总行数? 办法一:直接获取文件内容,使用换行符进行拆分得出总行数,这种办法对小文件可行,处理大文件时不可行: 办法二:使用fgets一行一行遍历,得出总行数,这种办法比办 ...
最新文章
- 以安全之名:俄罗斯强制所有消息应用留后门
- SpringMVC核心技术---转发和重定向
- 如果知道dll文件是面向32位系统还是面向64位系统的?
- MybatisPlus实现分页
- Teams与OneDrive for Business和SharePoint的关系
- Hadoop生态系统学习路线
- 机器学习经典算法具体解释及Python实现--K近邻(KNN)算法
- ArcGIS:ArcToolBox工具使用——提取DEM/DSM中的高程点
- GDI+ 学习记录(23): 输出文本
- 区块链监管难题争论不休,这里具体谈谈辅助监管的四种技术
- C语言中的空字符'\0'
- jsonrpc php使用,php实现的一个简单jsonrpc框架实例
- POJ_3984迷宫问题(bfs基础题)
- Unity Bound
- 单片机开发,stm32开发,串口下载软件,flymcu
- Shell编程语言(一)
- cass怎么多级放坡_cass土方计算考虑放坡
- Fastboot驱动及安装
- diskgenius克隆硬盘无法启动_用Diskgenius克隆分区到另一个磁盘上
- 爬取B站20万+条弹幕,我学会了如何成为B站老司机
热门文章
- Python机器学习:线型回归法007多元线性回归和正规方程的解
- c c和java最大的区别是什么,“一般”和“一般”之间的区别是什么,类型在C ++和Java?...
- java qq 界面_【Java】仿真qq尝试:聊天界面 响应用户输入
- opencv for andriod java代码实现霍夫变化(HoughLinesP)
- 高德地图文本标注html,设置点标注的文本标签
- python怎么分析数据结构_《利用Python进行数据分析》第五章-pandas的数据结构介绍...
- Java 并发编程之 ConcurrentHashMap,ConcurrentSkipListMap
- Mac下解决editcap等wireshark配套工具not found
- jsp基础代码片段(含sql与js和jsp的交互)与简易贴吧网站项目
- linux网卡主备,linux网卡bounding的主备模式下上层路由端需要什么设置?