用python制作的简单、小巧、可笑的etl

dasladen的Python项目详细描述


dasladen是一个用python制作的简单、小巧且可笑的etl

dasladen是一个通用的python包,用于自动生成etl(提取、转换和 加载数据)通过一个或多个表示任务的.json文件的配置。 它基于petl。它可以执行如下任务:

  • 将.csv文件加载到数据库表
  • 在.csv文件中运行数据库查询
  • 在数据库表中运行数据库查询
  • 将.csv文件转换为另一个.csv文件
  • 将.xls文件转换为.csv文件
  • 将.xml文件加载到数据库表中
  • 将.xls文件转换为.csv文件

这些任务可以配置为执行由petl提供的一些基本转换,并且您可以编写自己的 在加载过程中由dasladen调用的python模块或类中的转换。

还有其他类型的任务需要执行,如:

  • 将文件压缩为.zip文件
  • 上载文件
  • 执行python脚本
  • 执行SQL命令

任务配置在一个.json文件中,该文件支持将要执行的任务序列 按配置顺序。如何配置任务的详细信息将出现在wiki页面中。

使用dasladen的基本步骤是:

  • 通过pip install dasladen在您的环境或virtualenv中安装dasladen包。
  • 如果要执行数据库任务,请安装数据库驱动程序包。达斯莱登准备和 以下驱动程序:mysql viaPyMySQL,ms sql server viapyodbc,oracle viacx_Oracle。请看 所选驱动程序包的限制。
  • 为项目创建文件夹。
  • 在项目文件夹中准备具有以下名称的文件夹结构:
    • input是放置输入文件的默认文件夹,如.csv、.xml、.xls和.sql文件
    • output是任务写入目标文件的默认文件夹
    • module是python脚本的文件夹,如果不能将其放入项目文件夹中
    • capture是放置任务文件(.json或.zip)的默认文件夹
    • log是dasladen写入任务日志的文件夹
    • tasks是可以放置任务文件的文件夹。这只是个建议。
  • 使用tasks文件夹中的任务创建一个.json文件。
  • 从调用python -m dasladen的项目文件夹启动dasladen。
  • 如果要查看“登录控制台”窗口,请在调用时将--verbose作为参数传递。
  • .json任务文件从tasks复制到capture文件夹。

观察者将打开任务文件并对其进行处理。要查看结果,可以打开log文件夹并搜索 对于watcher_DD_TT.log,其中dd_tt是生成日志的日期和时间。在log文件夹中 也可以查看单个任务日志。

复制任务文件而不是移动它是很重要的,因为完成后它将被删除。

如果在capture文件夹中删除.zip以外的文件,则该文件将移动到input文件夹。

您可以使用所有其他依赖文件(.csv、.xls等)压缩.json文件并复制 也会压缩到capture文件夹中。观察者将解压,然后在一个临时文件夹中,复制输入 文件(除了.json文件)输入文件夹并执行.json文件。

.json文件中,可以配置调度程序来运行任务。有了它你可以推迟执行或者 配置其重复周期。

通过pypi包的数据驱动程序:

  • mysql通过PyMySQL包。V>;=0.7.5
  • MS SQL Server通过pyodbc包。V>;=3.0.10
  • Oracle通过cx_Oracle包。V>;=5.2.1
  • PostgreSQL通过psycopg2包。V>;=2.8.3

当前版本适用于python 2和3。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何删除TextInputLayout提示文本中的省略号(三个点)?   java通过蓝牙编程发送数据   java如何在Opengl ES中获得一个像素的透明颜色?   java如何在添加额外的maven依赖项后更新eclipse项目   Java机器人编程。在拾取和放置任务中移动零件时,如何跟踪零件的属性?   json如何使用Java访问JSONObject中的JSONArray?   Java将列表组的字段(BigDecimal)乘以2个字段求和   Java:从URL下载   java多ajax数据到Spring MVC控制器   java使用Android将文本文件上传到Google Drive   java使用org解析多个模式。三十。英国石油公司。总体安排日期时间格式化程序   安卓 java中的机器人选择测试。lang.NoSuchFieldError:在应用窗口侦听器上标记   BeanPostProcessor的java示例   java为什么这段代码在这里给我一个空异常错误?   java如何解析一个字符串并获得一个子字符串?   java:使用vfs S3插件在AmazonS3中使用服务器端加密