c xml导入mysql数据库_如何将 JSON, Text, XML, CSV 数据文件导入 MySQL-程序员宅基地

技术标签: c xml导入mysql数据库  

将外部数据导入(import)数据库是在数据库应用中一个很常见的需求。其实这就是在数据的管理和操作中的ETL(Extract,transform,load)的L(Load)部分,也就是说,将特定结构(structure)或者格式(format)的数据导入某个目的地(比如数据库,这里我们讨论MySQL)。

b0c9dd6cd04dde5ef667abaff1a5e947.png

本文要讨论的内容,是如何方便地将多种格式(JSON,Text,XML,CSV)的数据导入MySQL之中。

本文大纲:

1.将Text文件(包括CSV文件)导入MySQL

2.将XML文件导入MySQL

3.将JSON文件导入MySQL

4.使用MySQLworkbench的TableDataExportandImportWizard进行JSON或CSV文件的导入导出

一、将Text文件(包括CSV文件)导入MySQL

Mssql数据库数据移植到mysql数据库问题是一个比较复杂的过程,但对于少量数据导入来说,使用CSV文件导入mysql的方式还是很方便的。

1.导入CSV文件是要注意编码问题,保存的CSV文件要是ANSI格式,查看CSV文件的编码格式可以使用文本文件打开,然后另存为,查看该文件编码。

2.编码符合的情况下,就要进行导入,执行语句如下:

I.文件中无中文字符

3bf74b7db987dc797d60b74822acbdd5.png

II.文件中有中文字符

5a530b36da10ddc7ca09358afc52e614.png

二、将XML文件导入MySQL

这件事的完成方式,与我们的XML的形式有着很大的关系。

举个例子说,当你的XML数据文件有着很非常规范的格式,比如:

117d2dfc1f975d629dd07e7b0751f16a.png

或者

我们就可以很方便使用LOADXML来导入,这里可以参见MySQL的官方手册--LOADXMLSyntax。

然而我们可能有另外一些需求,比如说,我们可能会想要将XML文件的域映射到不同名字的列(TABLECOLUMN)之中。这里要注意,MySQLv5.0.7以后,MySQL的StoredProcedure中不能再运行LOADXMLINFILE或者LOADDATAINFILE。所以转换的程序(procedure)的编写方式与在此之前有所不同。这里,我们需要使用Load_File()和ExtractValue()这两个函数。

以下是一个示例XML文件和程序:文件:

bfcd186f4870b2769cf381aad348b239.png

程序:

fd32ee83eb01861ad6f79749f51abc30.png

在MySQL中,使用它进行导入:

callimport_some_xml('你的XML文件路径','/some_list/someone');

程序相当的直白,只要了解一下MySQL的脚本编写即可。

这里提一下DELIMITER$$。我们知道MySQL的命令分隔符默认为分号,然而脚本中很显然是有分号的,但是我们并不希望立即执行,所以我们需要临时更改分隔符。

三、将JSON文件导入MySQL

如何将JSON文件导入MySQL中,是一个很有趣的话题。JSON是一种现在相当常用的文件结构,所以掌握它的导入具有比较广泛的意义。

很多时候,我们处理的JSON数据是以如下形式出现的:

fd68af1c75a00121926a8763e9b3e4ff.png

而并不是规整的[{},{},{},{}](一些NoSQL数据库的Export)。

这样的形势对于载入有一个好处:因为每一行是一个JSONObject,所以我们便可以按行处理此文件,而不需要因为JSON的严格结构将整个文件(比如一个许多G的.json文件)全部载入。

方式一使用common-schema

common-schema是一个应用很广泛的MySQL的框架,它有着很丰富的功能和详细的文档。我们可以使用它的JSON解析的功能。(它还具有JSON转换成XML等等方便的功能)

具体说来,将common-schema导入之后,使用它的extract_json_value函数即可。源码中:

7c71356575d09484e4a4193851f20e83.png

该函数接受两个参数,一个是json_text,表示json文件的内容,另一个是xpath,表示数据的结构(这里可以类比XML文件的处理)。很多读者应该知道,XPath是用来对XML中的元素进行定位的,这里也可以作一样的理解。

当然了,我们也可以像之前处理XML文件导入一样,自己编写程序。这里便不再给出实例程序,有兴趣的读者可以自行编写或者跟笔者交流。

方式二使用mysqljsonimport

这是AndersKarlsson的一个完成度很高的作品。这一份程序由C写成。它依赖于一个JSONParser,Jansson。他们都有着比较好的维护和文档,所以使用上体验很好。

mysqljsonimport的下载在SourceForge上。具体使用参照其文档即可。

14fe42829e5f7e9a5b415680aab06d1c.png

--with-mysql这一步不是必要的,只要你安装的mysql的路径是系统的默认路径。很关键的,而且很容易被不熟悉的朋友忽略的是,这一个C程序要成功编译和运行,是需要MySQL的CAPI的,所以需要安装的依赖,除了jansson,还有libmysqlclient-dev。

jansson的安装就是简单的源码安装,libmysqlclient-dev则可以使用包管理工具(比如ubuntu中使用apt-get即可;编译和安装前,建议先sudoapt-getupdate以避免不必要的麻烦)。

导入命令:

$./mysqljsonimport–-databasetest–-tabletablenamejsonfilename

还有一个parser,作者是Kazuho,感兴趣的读者可以参看一下,他的相关博文是mysql_json-aMySQLUDFforparsingJSON,github项目是mysql_json。

四、使用MySQLworkbench

Workbench这个工具对于许多不熟悉SQL语言或者命令行的朋友还是很方便和友好的。利用它,可以方便地导入和导出CSV和JSON文件。

6e4219556c15cc8d41f238707da2ef91.png

小编结语:

本文介绍了将不同格式(JSON,Text,XML,CSV)的文件导入MySQL数据库的一些详细手段,并进行了一些分析,目的在于帮助读者扫除一些导入的障碍,理清一些概念。之所以没有讨论导出,是因为导出是一个MySQL到外的操作,是以MySQL本身为转移的,只要参考MySQL本身的机理即可。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35770958/article/details/113377106

智能推荐

博士申请 | 上海财经大学语言智能实验室招收2022年秋季入学博士生-程序员宅基地

文章浏览阅读1.3k次。合适的工作难找?最新的招聘信息也不知道?AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职!上海财经大学上海财经大学是教育部直属的一所以经管为主,法、文、理协..._上海财经大学语言智能实验室

linux下根据根据进程号查端口、根据端口号查进程号以及一些对端口的操作汇总_进程名称如何反查端口号-程序员宅基地

文章浏览阅读4.1k次。根据端口查进程:lsof -i:portnetstat -nap | grep port根据进程号查端口:lsof -i|grep pidnetstat -nap | grep pid根据进程名查找pid、port:ps -ef |grep tomcatps -ef |grep port(根据port查找相关进程)ps -ef |grep pid(根据pid查找相关进程)查看防..._进程名称如何反查端口号

联想WIN10解决intel vt-x问题_inter vtx-程序员宅基地

文章浏览阅读2.6w次,点赞11次,收藏29次。联想WIN10默认设置了【快速启动】,导致笔记本无法F12按进BIOS开启intelvt-x。解决办法:按住shift ,同时windows选择重启出现界面选择:疑难解答高级选项UEFI 固件设置重启,自动进入BISO界面Configuration-----Intel VirtualTechnology Disabled 改为 EnabledExit 保存修改退出..._inter vtx

NUTCH2.3 hadoop2.7.1 hbase1.0.1.1 solr5.2.1部署(三)_hbase_client_prefetch_limit-程序员宅基地

文章浏览阅读3.6k次。Precondition:hadoop 2.7.1hbase 0.98.13solr 5.2.1 / Apache Solr 4.8.1http://archive.apache.org/dist/lucene/solr/4.8.1/gora 0.6.1gora编译和Nutch编译部署1. Gora下载最新版本呢gora是0.6.1,下载或者直接通过_hbase_client_prefetch_limit

深度 | 刘群:基于深度学习的自然语言处理,边界在哪里?-程序员宅基地

文章浏览阅读361次。来源:AI科技评论编辑 | Camel四大边界:数据边界、语义边界、符号边界和因果边界当前,深度学习之于自然语言处理,有其局限性。那么它所能起作用的边界在哪里呢?对此..._基于word自然语言处理 基于character自然语言处理

linux下ad数模转换驱动程序设计,iTOP-4412开发板实现3路ADC数模转换驱动例程-程序员宅基地

文章浏览阅读290次。学习下 linux 数模程序驱动的编写,本节我们实现的功能是实现三路ADC 数模转换。驱动程序驱动程序的名字:“itop4412_adc.c”。要想把这个驱动注册到内核,先把这个驱动程序放到内核的“driver/char”目录下面,如下图所示: Makefile然后打开 drive/char 目录下面的 Makefile,添加:obj-$(CONFIG_ADC_CTL) += itop4412_a..._linux adc转换程序流程图

随便推点

制作一个amp页面-谷歌移动加速器AMP网页制作方法-程序员宅基地

文章浏览阅读1k次。这篇博客将给大家带来一系列技术性的东西,大家看好了哦,本篇给大家说点什么呢-amp,这个东西是谷歌搞出的针对移动优化的,和百度mip是一样的东西,关于哪家的好呢,这个还真不好评说,海豚的建议是amp和mip都做一个,哈哈。什么是移动加速器在制作amp之前,需要关注下它的发展背景,起初在网络还不是很发达的2000年初,移动业务却迅猛发展,大家还记得曾经抱着手机偷菜吗?一个月30M流量也能在..._amp制作

更新版极限反转1.51版重回峰巅,盈利更稳定-程序员宅基地

文章浏览阅读293次。下面我为各位汇友们带来重点推广更新升级版【极限反转】本策略是我们公司独立研发的,因为这款EA很是不错最近网上出现了很多的盗版,现在新版经过了四层加密,请广大汇友认准正版。前期因为英国脱欧,加载的镑系货币过多,出现了较大的回撤,经过这20天的潜心研究,反复的测试,有效的控制了风险,更新的版本已经完成。长期的观摩账户199000941在前期出现了回撤,使用更新版本后该账户稳定盈利,该账户只对购买过的客户开放。正版极限反转面板:更新版极限反转参数面板:..._极限反转1.51版

Java语言的四大特性_java四大基本特性-程序员宅基地

文章浏览阅读1.3k次。封装,继承,多态,抽象_java四大基本特性

Java并发学习之停止基于线程的服务_producerexec.awaittermination-程序员宅基地

文章浏览阅读171次。一.停止基于线程的服务1.一般的应用程序中会创建多个线程的服务,例如线程池,我们创建一个线程池的服务时,它会又创建多个线程,如果我们不关闭服务,它会一直存在,所以服务的生命周期通常比创建它们的方法的生命周期更长。如果应用程序准备退出,应用程序会关闭服务,服务又会关闭它拥有的线程。由于无法通过抢占式的方法来停止线程,所以它们需要自行关闭。2.我们对线程的封装原则是:除非拥有某个线程,否则不能对该线程进行操控。线程有一个相应的所有者(创建它的类),因此线程池是其他工作者线程的所有者,如果要中断这些线程,那么_producerexec.awaittermination

使用 Microsoft.UI.Xaml 解决 UWP 控件和对老版本 Windows 10 的兼容性问题-程序员宅基地

文章浏览阅读1.7k次。使用 Microsoft.UI.Xaml 解决 UWP 控件和对老版本 Windows 10 的兼容性问题 原文 使用 Microsoft.UI.Xaml 解决 UWP 控件和对老版本 Windows 10 的兼容性问题虽然微软宣称 Windows 10 将是最后一个 Windows 版本,但由于年代跨越实在太久远,兼容性依然是避不开的问题..._wpf程序使用microsoft.ui.xaml

dedecms教程:20位MD5加密密文解密示例介绍_20位加密串 怎么计算-程序员宅基地

文章浏览阅读896次。解密20位md5,20位md5加密算法。 dedecms的20位md5加密算噶是从32位md5中截取的20位,所以去掉前3位喝最后1位,即可获得16位md5值,即可破解15位md5。 例如:数据库的密文是f297a57a5a743894a0e4 得到20位MD5密码,前减3后,再去掉最后1位,得到16位MD5,这样就获得7a57a5a743894a0e 如果密文不能_20位加密串 怎么计算

推荐文章

热门文章

相关标签