(二)kettle--输入与输出

一、文件的输入

(1)CSV文件输入

CSV:CSV文件是一种带有固定格式文本文件

(2)文本文件输入

文本文件:提取日志信息的数据是开发常见的操作,日志信息基本都是文本类型

可以在内容中限定分隔符

(3)Excel文件输入

可以通过获取头部字段,来查看对应的内容

(4)多文件合并

(5)Get data from XML

XML 指可扩展标记语言(EXtensible Markup Language), XML 被设计用来传输和存储数据。

XPath即为XML****路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。

XPath基于XML****的树状结构,提供在数据结构树找寻节点的能力。

语法:选取节点XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。

比如以下

获取:testDescription、rowID、v1、v2

XPath路径

testDescription:../../@testDescription

rowID:../@rowID

v1:v1

v2:v2

XML 复制代码
<AllRows testDescription="1 - simple functionality test">
<Rows rowID="1">
first row chunk of data
<Row>
<v1>1.1.1</v1>
<v2>1.1.2</v2>
</Row>
<Row>
<v1>1.2.1</v1>
<v2>1.2.2</v2>
</Row>
</Rows>
<Rows rowID="2">
second row chunk of data
<Row>
<v1>2.1.1</v1>
<v2>2.1.2</v2>
</Row>
<Row>
<v1>2.2.1</v1>
<v2>2.2.2</v2>
</Row>
</Rows>
<Rows rowID="3">
third row chunk of data
<Row>
<v1>3.1.1</v1>
<v2>3.1.2</v2>
</Row>
<Row>
<v1>3.2.1</v1>
<v2>3.2.2</v2>
</Row>
</Rows>
</AllRows>

(6)JSON Input

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。

JSON核心概念:数组、对象、属性

数组:[ ]

对象:{ }

属性:key:value

JSON Path

JSONPath类似于****XPath在xml文档中的定位,JsonPath表达式通常是用来路径检索或设置Json的。

其表达式可以接受"dot--notation"(点记法)和"bracket--notation"(括号记法)格式

点记法:$.store.book[0].title

括号记法:$['store']['book'][0]['title']

比如:从json文件提取id、field和value数据

javascript 复制代码
{
    "status": "ok",
    "response": {
        "submissions": [
            {
                "id": "59434767",
                "timestamp": "2011-11-21 09:21:53",
                "user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0",
                "remote_addr": "192.168.1.1",
                "payment_status": "",
                "data": [
                    {
                        "field": "13776121",
                        "value": "Baylor Dallas"
                    },
                    {
                        "field": "13776401",
                        "value": "CHF"
                    },
                    {
                        "field": "13777966",
                        "value": "John Doe"
                    },
                    {
                        "field": "13780027",
                        "value": "9999"
                    },
                    {
                        "field": "13778165",
                        "value": "None of the above"
                    },
                    {
                        "field": "13778985",
                        "value": "Yes"
                    },
                    {
                        "field": "13778280",
                        "value": "Yes"
                    },
                    {
                        "field": "13778424",
                        "value": "Yes"
                    },
                    {
                        "field": "13778290",
                        "value": "Yes"
                    },
                    {
                        "field": "13778324",
                        "value": "Yes"
                    },
                    {
                        "field": "13778864",
                        "value": "Yes"
                    }
                ]
            },
            {
                "id": "59474875",
                "timestamp": "2011-11-21 17:01:22",
                "user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0",
                "remote_addr": "192.168.1.1",
                "payment_status": "",
                "data": [
                    {
                        "field": "13776121",
                        "value": "Healthsouth,"
                    },
                    {
                        "field": "13776401",
                        "value": "Pneumonia"
                    },
                    {
                        "field": "13777966",
                        "value": "Jane Doe"
                    },
                    {
                        "field": "13780027",
                        "value": "390"
                    },
                    {
                        "field": "13778165",
                        "value": "Experienced a fall?"
                    },
                    {
                        "field": "13861153",
                        "value": "Yes"
                    },
                    {
                        "field": "13780018",
                        "value": "Yes"
                    },
                    {
                        "field": "13780006",
                        "value": "No"
                    },
                    {
                        "field": "13780023",
                        "value": "Yes"
                    },
                    {
                        "field": "13780024",
                        "value": "Yes"
                    }
                ]
            }
        ],
        "total": 2,
        "pages": 1
    }
}

先抽取:id、data

id:$.response.submissions..id

data:$.response.submissions..data

在从data中抽取field和value

field:$..field

value:$..value

(7)生成记录

静态数据

数据仓库中绝大多数的数据都是业务系统生成的动态数据,但是其中一部分维度数据不是动态的,比如:日期维度

静态维度数据就可以提前生成

(8)表输入

我们先了一个概念:数据库驱动

数据库驱动是不同数据库开发商(比如oracle mysql等)为了某一种开发语言环境(比如java)能够实现统一的数据库调用而开发的一个程序,他的作用相当于一个翻译人员

一般驱动的位置放在\pdi-ce-8.2.0.0-342\data-integration\lib目录

以下是以mysql数据库为例,拉入表输入,新建数据库连接,获取SQL查询语句

二、文件的输出

(1)excel输出

微软的excel一般分为两类:xls 和 exls

xls : 2007年之前

exls : 2007年之后

(2)文本文件输出

数据操作常见的格式是:TXT和CSV

(3)SQL文件输出

SQL文件输出可以导出数据库结构数据

会根据表内容,输出对应的SQL语句

(4)表输出

表输出就是把数据写入到指定的表

(5)更新

更新就是把数据库已经存在的记录与数据流里面的记录进行比对,如果不同就进行更新

注意:如果记录不存在,则会出现错误

(6)插入更新

插入****更新就是把数据库已经存在的记录与数据流里面的记录进行比对,如果不同就进行更新

如果记录不存在,则会插入数据

(7)删除

删除就是删除数据库表中指定条件的数据。

相关推荐
2301_781571428 小时前
Golang格式化输出占位符都有什么_Golang fmt占位符教程【通俗】
jvm·数据库·python
养肥胖虎8 小时前
RAG学习笔记(3):区分数据库检索与RAG的使用场景
数据库·ai·rag
_ku_ku_8 小时前
数据库系统原理 · 数据库应用开发 · 自学总结
数据库
No8g攻城狮9 小时前
【人大金仓】wsl2+ubuntu22.04安装人大金仓数据库V9
java·数据库·spring boot·非关系型数据库
山峰哥9 小时前
SQL慢查询调优实战:从全表扫描到索引覆盖的完整复盘
前端·数据库·sql·性能优化
代码中介商10 小时前
Redis入门:5大数据类型全解析
数据库·redis·缓存
渣渣盟10 小时前
数据库设计范式详解(纯小白版)
数据库·oracle·软考·数据库工程师
张元清11 小时前
useEffect 之外:专门处理异步、深比较和 SSR 的 Effect Hook
前端·javascript·面试
夜雪闻竹11 小时前
Cursor 对话导入:解析 SQLite 里的宝藏
数据库·sqlite·ai编程
XinZong12 小时前
OpenClaw 中最经典的 6 款skill,真正能进工作流的 skills
javascript·后端