python ETL工具 pyetl

【Python】 ETL 在ETL(Extract, Transform, Load)流程中,提取(Extraction)是第一步,其核心在于从各种数据源中获取原始数据。本章将聚焦于“文本文件”的提取,因为文本文件是数据交换中最常见且最基础的形式之一。我们将从最底层的操作系统文件I/O原理出发,逐步深入到Python中高效、鲁棒地处理各种文本文件格式的方法,并剖析其内部机制。要精通文本文件提取,首先需要理解文件在操作系统层面的本质以及Python如何与这些底层机制交互。文件并非魔法,它是一段存储在持久化介质(如硬盘、SSD)上的二进 阅读详情

pyetl是一个纯python开发的ETL框架, 相比sqoop, datax 之类的ETL工具,pyetl可以对每个字段添加udf函数,使得数据转换过程更加灵活,相比专业ETL工具pyetl更轻量,纯python代码操作,更加符合开发人员习惯

安装

pip3 install pyetl

使用示例

数据库表之间数据同步

from pyetl import Task, DatabaseReader, DatabaseWriter
reader = DatabaseReader("sqlite:///db1.sqlite3", table_name="source")
writer = DatabaseWriter("sqlite:///db2.sqlite3", table_name="target")
Task(reader, writer).start()

数据库表到hive表同步

from pyetl import Task, DatabaseReader, HiveWriter2
reader = DatabaseReader("sqlite:///db1.sqlite3", table_name="source")
writer = HiveWriter2("hive://localhost:10000/default", table_name="target")
Task(reader, writer).start()

数据库表同步es

from pyetl import Task, DatabaseReader, ElasticSearchWriter
reader = DatabaseReader("sqlite:///db1.sqlite3", table_name="source")
writer = ElasticSearchWriter(hosts=["localhost"], index_name="tartget")
Task(reader, writer).start()

原始表目标表字段名称不同,需要添加字段映射
添加

# 原始表source包含uuid,full_name字段
reader = DatabaseReader("sqlite:///db.sqlite3", table_name="source")
# 目标表target包含id,name字段
writer = DatabaseWriter("sqlite:///db.sqlite3", table_name="target")
# columns配置目标表和原始表的字段映射关系
columns = {"id": "uuid", "name": "full_name"}
Task(reader, writer, columns=columns).start()

字段的udf映射,对字段进行规则校验、数据标准化、数据清洗等

# functions配置字段的udf映射,如下id转字符串,name去除前后空格
functions={"id": str, "name": lambda x: x.strip()}
Task(reader, writer, columns=columns, functions=functions).start()

继承Task类灵活扩展ETL任务

import json
from pyetl import Task, DatabaseReader, DatabaseWriter

class NewTask(Task):
  reader = DatabaseReader("sqlite:///db.sqlite3", table_name="source")
  writer = DatabaseWriter("sqlite:///db.sqlite3", table_name="target")
  
  def get_columns(self):
    """通过函数的方式生成字段映射配置,使用更灵活"""
    # 以下示例将数据库中的字段映射配置取出后转字典类型返回
    sql = "select columns from task where name='new_task'"
    columns = self.writer.db.read_one(sql)["columns"]
    return json.loads(columns)
   
  def get_functions(self):
    """通过函数的方式生成字段的udf映射"""
    # 以下示例将每个字段类型都转换为字符串
    return {col: str for col in self.columns}
   
  def apply_function(self, record):
    """数据流中对一整条数据的udf"""
    record["flag"] = int(record["id"]) % 2
    return record

  def before(self):
    """任务开始前要执行的操作, 如初始化任务表,创建目标表等"""
    sql = "create table destination_table(id int, name varchar(100))"
    self.writer.db.execute(sql)
  
  def after(self):
    """任务完成后要执行的操作,如更新任务状态等"""
    sql = "update task set status='done' where name='new_task'"
    self.writer.db.execute(sql)

NewTask().start()

目前已实现Reader和Writer列表

Reader介绍
DatabaseReader支持所有关系型数据库的读取
FileReader结构化文本数据读取,如csv文件
ExcelReaderExcel表文件读取
Writer介绍
DatabaseWriter支持所有关系型数据库的写入
ElasticSearchWriter批量写入数据到es索引
HiveWriter批量插入hive表
HiveWriter2Load data方式导入hive表(推荐)
FileWriter写入数据到文本文件

总结

到此这篇关于python ETL工具 pyetl的文章就介绍到这了

python开源的etl工具,eclat算法python 第三种方式是在计算句子概率时,不考虑重复词语出现的次数,但是在统计计算词语的概率P("词语"|S)时,却考虑重复词语的出现次数,这样的模型可以叫作混合模型。1)P(“属于某类”|“具有某特征”)=在已知某样本“具有某特征”的条件下,该样本“属于某类”的概率。所以叫做『后验概率』;如果我们考虑重复词语的情况,也就是说,重复的词语我们视为其出现多次,直接按条件独立假设的方式推导,这样的模型叫作多项式模型。2)P(“具有某特征”|“属于某类”)=在已知某样本“属于某类”的条件下,该样本“具有某特征”的概率; 阅读详情

相关推荐

Python ETL处理实战教程与代码

在本实战项目中,我们将使用Python实现一个完整的ETL流程,旨在从一个在线零售网站抓取产品数据,然后进行清洗、转换,并最终加载到一个本地的MySQL数据库中。数据源为网站的公开产品目录API,提供了产品ID、名称、描述、价格和库存等信息。

weixin_42575109的博客 667

【亲测免费】 探索高效数据处理:PyETL - Python中的ETL神器

探索高效数据处理:PyETL - Python中的ETL神器 是一个强大的Python库,专门用于数据提取、转换和加载(ETL)操作。在大数据时代,数据处理是不可或缺的部分,而PyETL提供了简洁、高效的解决方案,使得开发者可以更专注于业务逻辑,而非底层数据处理的复杂性。 项目简介 PyETL 是一个轻量级但功能丰富的ETL工具包,它允许开发人员以Pythonic的方式执行各种数据预处理任务。通过...

gitblog_00036的博客 1745

pyetl:python ETL框架

Pyetl Pyetl is a Python 3.6+ ETL framework Installation: pip3 install pyetl Example import sqlite3 import pymysql from pyetl import Task, DatabaseReader, DatabaseWriter, ElasticsearchWriter, FileWriter src = sqlite3.connect("file.db") reader = DatabaseReader(src, table_name="source_table") # 数据库之间数据同步,表到表传输 dst = pymysql.connect(host="localhost", user="your_user", password="your_password", db="tes

python实现etl_python ETL工具 pyetl

pyetl是一个纯python开发的ETL框架, 相比sqoop, datax 之类的ETL工具,pyetl可以对每个字段添加udf函数,使得数据转换过程更加灵活,相比专业ETL工具pyetl更轻量,纯python代码操作,更加符合开发人员习惯安装pip3 install pyetl使用示例数据库表之间数据同步from pyetl import Task, DatabaseReader, Data...

weixin_39918588的博客 843

用于ETL的Python数据转换工具详解

主要介绍了用于ETL的Python数据转换工具,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

告别手动归档:基于Allegro Skill的XTools一键生成Gerber与生产文件实践

本文详细介绍了基于Allegro Skill的XTools工具如何实现一键生成Gerber与生产文件,大幅提升PCB设计效率。通过自动化流程,解决了传统手动归档中的重复劳动、人为失误和标准不统一等问题,特别适合需要频繁输出生产文件的工程师。文章包含安装配置、实战操作、问题排查及进阶技巧,帮助用户快速掌握这一高效工具。

weixin_30505225的博客 461

可以用python写的etl工具_python ETL工具 pyetl

pyetl是一个纯python开发的ETL框架, 相比sqoop, datax 之类的ETL工具,pyetl可以对每个字段添加udf函数,使得数据转换过程更加灵活,相比专业ETL工具pyetl更轻量,纯python代码操作,更加符合开发人员习惯安装pip3 install pyetl使用示例数据库表之间数据同步from pyetl import Task, DatabaseReader, Data...

weixin_39569894的博客 1327

oracle ebs form 10g安装教程

这个窗口需要想想,你要安装的类型,不要盲目点击“下一步”,因为一旦Oracle安装后,重新安装之前,需要卸载Oracle干净才能重新安装,有时还会出现错误。到了该窗口后,需要耐心等待安装,安装到一大半后,自动弹出一个窗口,让我们选择Oracle安装第2部分磁盘的路径,继续安装,然后坐等安装结束。自定义安装Oracle根目录,点击“下一步”按钮后,耐心等待几秒钟,工具自动加载产品列表,加载完后,自动跳转到“选择安装类型”窗口。注:等待几秒钟后,关闭dos窗口,不必惊慌,自动调转到安装界面。

XIELIUHAI001的博客 473

PyETL:一个强大的Python ETL框架

PyETL:一个强大的Python ETL框架 1. 项目的基础介绍和主要的编程语言 PyETL是一个基于Python 3.6+的ETL(Extract, Transform, Load)框架,旨在简化数据从源系统到目标系统的提取、转换和加载过程。该项目由taogeYT开发并托管在GitHub上,是一个开源项目,遵循Apache-2.0许可证。 2. 项目的核心功能 PyETL框架提供了丰富的功能...

gitblog_01220的博客 912

在ros里给机械臂加上夹爪和底盘后,控制真实机械臂

使用ur3_bringup 可以连接真实机械臂 使用官方的ur3_moveit_planning_execution.launch 可以对机械臂 moveit规划。 但是只有机械臂,没有夹爪。 官方如图: 我把原来的ur3_moveit_config 复制出来,修改 然后把ur3.xacro 等模型文件复制出来修改,修改完之后,有了夹爪,有了底盘。 规划组什么的使用moveit setup assistant 配置过了。 在rviz中可以笛卡尔空间规划了。 ...

超级菜 2716

多孔材料吸附性质模拟程序RASPA的离线和在线安装方法

RASPA-2.0是今年美国西北大学教授Randall Q. Snurr等人开发的针对于MC,MD,分子力学优化等用途的程序,相比于之前开发的MUSIC软件,RASPA的功能更加齐全,操作更加简便,可以在MC的吸附过程中考虑骨架的柔性,也可以想MUSIC一样先制作积分格点(music中的map)。 A、离线安装(centos为例): (1)、安装之前要检查一下是否装了automake,

youyno的博客 1万+

【亲测免费】 【Python ETL之旅】全面指南:如何安装与配置pyetl

【Python ETL之旅】全面指南:如何安装与配置pyetl 项目基础介绍及编程语言 pyetl是优快云社区开发者基于Python 3.6及以上版本开发的一个ETL(提取-转换-加载)框架。它简化了数据处理流程,支持从多种数据源提取数据,包括但不限于关系型数据库、CSV文件、Excel以及Elasticsearch,随后转换这些数据,并将其加载到另一个数据库、文件系统或其他存储系统中。此框架旨...

gitblog_01219的博客 969

ChatBI实战:如何用Vanna和WrenAI搭建企业级智能问数系统(附避坑指南)

本文详细介绍了如何利用Vanna和WrenAI搭建企业级智能问数系统(ChatBI),解决多源异构数据整合、语义理解准确率和系统性能安全等核心挑战。通过实战案例和优化策略,展示了这一组合方案在提升查询效率、实现业务自主分析和动态探索式分析方面的显著优势,特别适合企业级数据查询需求。

weixin_29047919的博客 400

PyETL 项目下载及安装教程

PyETL 项目下载及安装教程 1、项目介绍 PyETL 是一个基于 Python 3.6+ 的 ETL(Extract, Transform, Load)框架,旨在简化数据从源系统到目标系统的提取、转换和加载过程。它支持多种数据源和目标,包括关系型数据库、文件系统、Elasticsearch 等。PyETL 提供了灵活的配置选项,允许用户自定义数据处理逻辑,适用于各种数据集成和迁移场景。 2、项...

gitblog_01228的博客 726

brpc组件bvar源码解析(一)简介、使用和类的关系

bvar是brpc中的一个重要组件,brpc内部有很多builtin监控都是bvar实现的。 brpc文档介绍bvar“几乎不会给程序增加性能开销,也快于竞争频繁的原子操作”。它的原理是:多线程累加一个计数器时,每个线程只累加私有的变量而不参与全局竞争,因此写时没有锁的竞争;在读取时累加所有线程的私有变量。虽然读比之前慢多了,但写就快多了,因此它使用写多读少的场景,例如统计、监控场景。 1.使用 // bvar::Adder<T>用于累加,下面定义了一个统计read error总数的Adder。

华秋实的专栏 1852

31、贝叶斯认知建模与隐马尔可夫模型:理论与应用

本文探讨了贝叶斯认知建模与隐马尔可夫模型(HMM)的理论基础及其在认知科学和神经科学中的应用。重点介绍了贝叶斯定理和HMM的基本原理,并结合实际案例,如情绪识别系统和脑机接口(BCI),展示了它们在处理复杂认知任务中的强大能力。文章还讨论了贝叶斯-HMM模型的技术细节、优势与局限性,以及未来的发展前景。

meat5的博客 141

python实现etl_pythonETL工具的使用

应对小规模业务场景使用专业的etl会有点费劲,还得增加运维监控成本,想想直接写个框架,用代码直接做etl数据接入安装pip install pyetl使用首先看下最简单的demofrom pyetl import Etlclass TestConfig:# 这里直接是把源库和目的库配置成了一个,只是为了演示使用DST_URI = SRC_URI = {'uri': 'mysql+pymysql:/...

weixin_39851918的博客 2702

RTOS与Linux功能差异与应用场景全面对比

在嵌入式系统的开发中,操作系统的选择至关重要。和是两种广泛应用的操作系统,它们在功能、设计目标以及应用领域中各具优势。随着嵌入式系统的不断发展,已成为嵌入式行业的大趋势。那么,这两者到底有什么不同呢?

硬核科技 402

Pyetl 项目常见问题解决方案

Pyetl 项目常见问题解决方案 一、项目基础介绍 Pyetl 是一个基于 Python 3.6+ 的 ETL(Extract, Transform, Load)框架,主要用于数据的抽取、转换和加载。它支持多种关系型数据库的读取和写入,以及结构化文本数据的处理。Pyetl 的目标是提供一个简单易用、功能强大的工具,帮助开发者和数据工程师高效地处理数据。 主要编程语言 Python 二、新手常见...

gitblog_01063的博客 557

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【亲测免费】 开源项目PyETL深度指南:入门须知与问题解决方案

开源项目PyETL深度指南:入门须知与问题解决方案 基础介绍: PyETL是由优快云公司以外的开发者taogeYT维护的一个Python ETL(提取-转换-加载)框架,专门设计用于简化数据处理流程。它支持Python 3.6及以上版本,提供了强大且灵活的数据迁移能力。项目涵盖了从数据库读取(包括多种关系型数据库)、Excel和CSV文件处理,到写入数据库或Elasticsearch等多种场景。...

gitblog_01234的博客 498

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Pyetl项目技术文档

Pyetl项目技术文档 Pyetl是一个专为Python 3.6及以上版本设计的ETL(Extract, Transform, Load)框架,简化了在不同数据源间移动数据的过程,特别适合那些需要灵活性和轻量级解决方案的场景。 安装指南 安装Pyetl非常简单,只需在命令行中运行以下pip命令: pip3 install pyetl 这将会下载并安装Pyetl及其依赖项,让你即刻开始使用。 项目...

gitblog_01204的博客 651

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

PyETL 开源项目快速入门指南

PyETL 开源项目快速入门指南 欢迎来到 PyETL 的简易安装与使用教程。本指南将带您了解此框架的基础结构,如何启动项目,以及配置文件的管理。请注意,这里所使用的信息基于提供的描述和常规开源项目结构,具体细节可能需结合项目最新文档或仓库实际结构进行调整。 1. 项目目录结构及介绍 PyETL 是一个基于Python的ETL框架,旨在简化数据提取、转换和加载的过程。虽然具体的目录结构在不同的版本...

gitblog_00214的博客 371

python etl_用于ETL的Python数据转换工具

前几天,我去Reddit询问是否应该将Python用于ETL相关的转换,并且压倒性的回答是"是"。但是,尽管我的Redditor同事热心支持使用Python,但他们建议研究Pandas以外的库-出于对大型数据集Pandas性能的担忧。经过研究,我发现了很多用于数据转换的Python库:有些改进了Pandas的性能,而另一些提供了自己的解决方案。我找不到这些工具的完整列表,所以我想我可以使用所做的研...

weixin_39626369的博客 381
上一篇: python anaconda 安装使用
下一篇: 建议看一下,零基础学Python都想问的6个问题,老师傅给你两千字解答
程序员_大白
博客等级 码龄5年 1万+粉丝 4001原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值