由于工作原因,不得不与一个二逼团队合作,

我说直接导出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大文件 数据导入相关推荐

  1. python读取matlab数据_两分钟搞定Python读取matlab的.mat数据

    Matlab是学术界非常受欢迎的科学计算平台,matlab提供强大的数据计算以及仿真功能.在Matlab中数据集通常保存为.mat格式.那么如果我们想要在Python中加载.mat数据应该怎么办呢?所 ...

  2. matlab读取.mb15格式数据,两分钟搞定Python读取matlab的.mat数据

    Matlab是学术界非常受欢迎的科学计算平台,matlab提供强大的数据计算以及仿真功能.在Matlab中数据集通常保存为.mat格式.那么如果我们想要在Python中加载.mat数据应该怎么办呢?所 ...

  3. 一款好用的JS插件xm-select【只需要引用一个JS文件就搞定】

    一款好用的JS插件xm-select[只需要引用一个JS文件就搞定] 先上js代码:复制保存直接用 !function(e){var t={};function n(o){if(t[o])return ...

  4. [Qt教程] 第27篇 XML(一)使用DOM读取XML文档

    [Qt教程] 第27篇 XML(一)使用DOM读取XML文档 楼主  发表于 2013-5-21 21:14:28 | 查看: 1001| 回复: 14 使用DOM读取XML文档 版权声明 该文章原创 ...

  5. linux dd 截文件,Linux使用dd命令快速生成大文件(转)

    dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero ...

  6. java读取excel大文件

    在读取excel大文件的时候就不能再使用poi包下面的Workbook类,会造成OOM等问题. 我们常见的excel分为xlsx格式和csv格式.分别实现一下. xlsx格式处理. 需要的pom依赖: ...

  7. Linux dd命令截取文件,linux使用dd命令快速生成大文件

    dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero ...

  8. kettle将多个文件压缩_如何使用WinRAR将一个大文件压缩成多个小的压缩包

    目录 1.使用WinRAR将一个大文件压缩成多个小的压缩包 2.使用WinRAR将多个小的压缩包,解压/合并成一个大文件 3.结尾 / 在现实生活中,受文件大小的限制,在传输的过程往往出现困难,如:邮 ...

  9. php读取csv指定行_PHP快速读取CSV大文件指定行

    1.如何快速获取CSV大文件的总行数? 办法一:直接获取文件内容,使用换行符进行拆分得出总行数,这种办法对小文件可行,处理大文件时不可行: 办法二:使用fgets一行一行遍历,得出总行数,这种办法比办 ...

最新文章

  1. 以安全之名:俄罗斯强制所有消息应用留后门
  2. SpringMVC核心技术---转发和重定向
  3. 如果知道dll文件是面向32位系统还是面向64位系统的?
  4. MybatisPlus实现分页
  5. Teams与OneDrive for Business和SharePoint的关系
  6. Hadoop生态系统学习路线
  7. 机器学习经典算法具体解释及Python实现--K近邻(KNN)算法
  8. ArcGIS:ArcToolBox工具使用——提取DEM/DSM中的高程点
  9. GDI+ 学习记录(23): 输出文本
  10. 区块链监管难题争论不休,这里具体谈谈辅助监管的四种技术
  11. C语言中的空字符'\0'
  12. jsonrpc php使用,php实现的一个简单jsonrpc框架实例
  13. POJ_3984迷宫问题(bfs基础题)
  14. Unity Bound
  15. 单片机开发,stm32开发,串口下载软件,flymcu
  16. Shell编程语言(一)
  17. cass怎么多级放坡_cass土方计算考虑放坡
  18. Fastboot驱动及安装
  19. diskgenius克隆硬盘无法启动_用Diskgenius克隆分区到另一个磁盘上
  20. 爬取B站20万+条弹幕,我学会了如何成为B站老司机

热门文章

  1. Python机器学习:线型回归法007多元线性回归和正规方程的解
  2. c c和java最大的区别是什么,“一般”和“一般”之间的区别是什么,类型在C ++和Java?...
  3. java qq 界面_【Java】仿真qq尝试:聊天界面 响应用户输入
  4. opencv for andriod java代码实现霍夫变化(HoughLinesP)
  5. 高德地图文本标注html,设置点标注的文本标签
  6. python怎么分析数据结构_《利用Python进行数据分析》第五章-pandas的数据结构介绍...
  7. Java 并发编程之 ConcurrentHashMap,ConcurrentSkipListMap
  8. Mac下解决editcap等wireshark配套工具not found
  9. jsp基础代码片段(含sql与js和jsp的交互)与简易贴吧网站项目
  10. linux网卡主备,linux网卡bounding的主备模式下上层路由端需要什么设置?