下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

如何将 JSON, Text, XML, CSV 数据文件导入 MySQL

作者:课课家教育     来源: http://www.kokojia.com点击数:1355发布时间: 2017-08-09 10:00:02

标签: 数据库MySQL数据导入

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

如何将 JSON, Text, XML, CSV 数据文件导入 MySQL_数据库_ MySQL_数据导入_课课家教育

  本文要讨论的内容,是如何方便地将多种格式(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.文件中无中文字符

 1.导入CSV文件是要注意编码问题,保存的CSV文件要是ANSI格式,查看CSV文件的编码格式可以使用文本文件打开,然后另存为,查看该文件编码。    2.编码符合的情况下,就要进行导入,执行语句如下:    I.文件中无中文字符

  II.文件中有中文字符

 II.文件中有中文字符

  二、将XML文件导入MySQL

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

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

 这件事的完成方式,与我们的XML的形式有着很大的关系。    举个例子说,当你的XML数据文件有着很非常规范的格式,比如:

  或者

  <rowcolumn1="value1"column2="value2".../>

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

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

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

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

  程序:

 程序:

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

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

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

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

  三、将JSON文件导入MySQL

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

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

 如何将JSON文件导入MySQL中,是一个很有趣的话题。JSON是一种现在相当常用的文件结构,所以掌握它的导入具有比较广泛的意义。    很多时候,我们处理的JSON数据是以如下形式出现的:

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

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

  方式一使用common-schema

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

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

 common-schema是一个应用很广泛的MySQL的框架,它有着很丰富的功能和详细的文档。我们可以使用它的JSON解析的功能。(它还具有JSON转换成XML等等方便的功能)    具体说来,将common-schema导入之后,使用它的extract_json_value函数即可。源码中:

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

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

  方式二使用mysqljsonimport

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

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

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

      --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文件。

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

  小编结语:

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

赞(22)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程