kettle实战——对大量json文件的数据进行两层解析处理后导入MYSQL数据库中

  • 1、简介
  • 2、要处理的数据
  • 3、数据处理
  • 4、 使用kettle处理数据
  • 4.1、整体流程
  • 4.2、具体操作
  • 总结


1、简介

将外部数据导入(import)数据库是在数据库应用中一个很常见的需求。json作为轻量文件在储存大量数据上具有很强的应用性,本文将介绍如何利用kettle对大量json文件的数据进行处理并导入到mysql数据库中。

2、要处理的数据

python 执行kettle文件 kettle调用python脚本_json


要处理的文件格式并不是json格式的,但内容的接送形式的,因此首先要将文件格式转为接送格式。

3、数据处理

这里我写了一个python脚本,将文件格式批量转成json形式的。

# 批量修改一个文件下的文件后缀
import sys
import os

def Rename():
    #Path = input("请输入你需要操作的目录(格式如 --windows 'F:\\test' ---mac '/Users/mac/Documents/test'):")
    # 也可以将文件路径写死:
    Path = "F:\\test\\"

    filelist = os.listdir(Path)
    for files in filelist:
        Olddir = os.path.join(Path, files)
        print(files)  # 打印出老的文件夹里的目录和文件
        if os.path.isdir(Olddir):  # 判断是否是文件夹,是文件夹,跳过
            continue
        filename = os.path.splitext(files)[0]
    
        Newdir = os.path.join(Path, filename + '.json')  # 只要修改后缀名就可以更改成任意想要的格式
        os.rename(Olddir, Newdir)

Rename()

处理后的数据形式

python 执行kettle文件 kettle调用python脚本_大数据_02

4、 使用kettle处理数据

4.1、整体流程

python 执行kettle文件 kettle调用python脚本_大数据_03

4.2、具体操作

获取文件名

python 执行kettle文件 kettle调用python脚本_大数据_04


这里是通过浏览需要添加的一个具体文件,再进行添加。添加之后删除具体的目录,保留到包含子文件的文件夹,再添加通配符“.*.json”。具体的话可以百度一下,相信你们可以的。

第一层jsoninput

python 执行kettle文件 kettle调用python脚本_json_05


从字段获取源选择filename

python 执行kettle文件 kettle调用python脚本_json_06


字段直接从下面的select fields获取字段第二层json解析

python 执行kettle文件 kettle调用python脚本_字段_07


python 执行kettle文件 kettle调用python脚本_大数据_08


字段选择1

python 执行kettle文件 kettle调用python脚本_大数据_09


选择需要输入的内容,并把N、V改名,方便后续处理,理解。列转行

python 执行kettle文件 kettle调用python脚本_字段_10


列转行就是对json的第二层进行处理,D中有很多键值对,需要对其进行转换,为后续数据可视化做准备。目标字段可自己命名,数据字段选择对应的值,这里是value,关键字段是D中的具体内容。

python 执行kettle文件 kettle调用python脚本_大数据_11


如上图,iname对应的就是N的内容,ivalue对应的就是V的值。嗯…应该能理解吧 0.0字段选择2

python 执行kettle文件 kettle调用python脚本_数据_12


这里是选择最终要输出的内容类型:

python 执行kettle文件 kettle调用python脚本_数据_13


表输出步骤先新建数据库连接,配置好之后,勾选“指定数据库字段”,再获取字段即可。

最后检查整体流程,保存,运行完成之后,数据库的指定表就有内容了,如下:

python 执行kettle文件 kettle调用python脚本_大数据_14

总结

处理大数据上kettle是很不错的工具,本文可能有些地方表达得不是不清楚,欢迎与我交流!最后点个赞吧!感谢!