Scriptella ETL 快速上手
作者:臭豆腐[trydofor.com]
日期:2010-07-07
授权:署名-非商业-保持一致 1.0 协议
声明:拷贝、分发、呈现和表演本作品,请保留以上全部信息。
文档目录
1. Scriptella 预备知识
许可证:Apache License, Version 2.0
当前版本:Scriptella 1.0 Released (May 5, 2010)
系统需求:JRE 5.0+ (有些driver要求更高JRE,如JSR 223,要JRE6)
典型应用:(官方资料的简译)
- 执行 SQL,JS,JEXL,Velocity等脚本。
- 数据库迁移。LDAP,JDBC,XML等数据源的协作。
- 跨DB的ETL操作,以CSV,文本,XML等格式的导入导出。
- 作为Ant的一个task。* Db Schema 的自动升级。
官方文档:
2. Scriptella 常用示例
以下示例都是官方网站中比较有代表性的。
这里只是进行了简单的集中和部分注释。
2.1. JavaScript的使用
The following query executes a child script 10 times. As the result of
execution 10 records are inserted into a database table.
Additionally a log file log.txt is produced.
简译:下面的Query执行了10次内嵌Script。
效果是,在DB中插入了10条记录,并产生日志log.txt。
<xml> 完整的ETL文件 |
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
|
<?xml version="1.0" encoding="UTF-8"?> <!-- 指定编码,防止系统弄错字符集 -->
<!DOCTYPE etl SYSTEM "http://scriptella.javaforge.com/dtd/etl.dtd">
<etl>
<connection id="script" driver="script"/>
<connection id="out" driver="oracle" url="jdbc:oracle:thin:@localhost:1521:DB"/>
<connection id="log" driver="script" url="log.txt"/>
<query connection-id="script">
<![CDATA[
for (var i = 0; i < 10; i++) {
login = 'login' + i;
//You can instantiate Java objects and invoke static methods
var now = new java.sql.Timestamp(java.lang.System.currentTimeMillis());
query.next(); //Executes a child script element // * 执行后续的所有元素
}]]>
<!-- Inserts a parameterized row into a database -->
<script connection-id="out">
INSERT INTO Table(ID, Login, Login_Time) VALUES (?i, ?login, ?now);
</script>
<!-- Logs the message using MessageFormat class and parent context variables -->
<script connection-id="log">
// create Java String array of 2 elements
var a = java.lang.reflect.Array.newInstance(java.lang.Object, 2)
a[0] = now;a[1] = i;
println(format.format(a));
>/script>
</query>
</etl>
|
|
2.2. CSV文件的使用
<xml> ETL文件片段 |
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
|
<connection id="in" driver="csv" url="data.csv" />
<connection id="out" driver="csv" url="report.csv">
#Use empty quote to turn off quoting
quote=
separator=;
</connection>
<!-- connection里面可以设置参数,各个connection不一样 -->
<script connection-id="out">
ID,Priority,Summary,Status
</script>
<query connection-id="in">
<!--Empty query means select all-->
<script connection-id="out">
$rownum,$priority,$summary,$status
</script>
</query>
|
|
<txt> data.csv |
priority,summary,status
11,summary1,21
12,summary1,22
|
<txt> report.csv |
ID;Priority;Summary;Status
1;11;summary1;21
2;12;summary1;22
|
解说:
$priority,$summary,$status,就是CVS的头(首行) priority,summary,status。
2.3. 文本文件的使用
大部分时候,我们处理文本,用到Text Driver,然后用正则表达式匹配行划分组。示例比较简单。
2.4. 发送邮件的使用
<xml> HTML邮件 |
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
|
<etl>
<connection driver="mail" url="mailto:user@nosuchhost.com?subject=Hello"
classpath="mail.jar:activation.jar">
type=html
mail.smtp.host=mail.host.name
mail.user=user
mail.password=password
mail.from=Firstname Lastname <user@nosuchhost.com>
</connection>
<script><![CDATA[
<html>
<body>
Hello,
<hr>
<a href="http://scriptella.javaforge.com/" title="Powered by Scriptella ETL">
<img src="http://scriptella.javaforge.com/images/scriptella-powered.gif"
width="88" height="31" border="0" alt="Powered by Scriptella ETL">
</a>
</body>
</html>]]>
</script>
</etl>
|
|
<xml> 动态发邮件 |
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
|
<etl>
<connection id="mail" driver="mail" url="mailto:$email?subject=Hello $name"
classpath="mail.jar:activation.jar">
mail.smtp.host=mail.host.name
mail.user=user
mail.password=password
mail.from=Administrator <user@nosuchhost.com>
</connection>
<connection id="db" .../>
<query connection-id="db" >
SELECT * FROM Users
<script connection-id="mail">
#$rownum
Message produced by Scriptella ETL
</script>
</query>
</etl>
|
|
2.5. M$ Excel的使用
把 Excel当Db使用,因为是JDBC驱动。
<xml> ETL文件片段 |
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
|
<connection id="xls" url="jdbc:xls:file:report.xls" classpath="sqlsheet-0.1.0.jar; poi-3.0.2-FINAL-20080204.jar; jsqlparser.jar" />
<script connection-id="xls">
CREATE TABLE SHEET1(
COL1 INT,
COL2 INT
);
</script>
...
<query connection-id="db">
...
<script connection-id="xls">
INSERT INTO SHEET1 (COL1,COL2) VALUES(${rownum},${col2_value});
</script>
</query>
|
|
3. Scriptella 注意事项
- query标签,只能用来查询数据,UPDATE,INSERT,DELETE要用Script。
- if="priority == $priority",query/script属性if里变量的使用。
- INSERT INTO $TABLE2 VALUES (?V1, ?{V2+V3}) 变量的使用方法和作用。
- 变量的作用域是自身和子标签,父标签的同名变量被隐藏。
原始地址:
http://trydofor.com/a9w3-auhome/trydofor/article/2010/0707113250/body.htm
分享到:
相关推荐
- **可视化设计界面**:Clover DX 提供了直观的拖放式组件设计界面,使得非技术背景的用户也能够快速上手。 - **高度可扩展性**:支持自定义插件开发,可以根据特定业务需求进行定制化扩展。 - **高性能处理能力**:...
ETL Automation 是一个自动化的数据集成工具,旨在帮助用户快速高效地完成数据提取、转换和加载(ETL)过程。本手册将详细介绍 ETL Automation 的安装、配置、使用和管理。 ETL Automation 简介 ETL Automation 是...
这种低代码甚至无代码的开发方式大大简化了ETL流程的构建过程,使得非专业开发人员也能轻松上手。 **etl-crontab调度设计器** 负责根据预设的时间周期来触发ETL任务,并提供查看任务执行日志的功能。这样,用户可以...
2. **Kettle的使用与实践**:`Kettle使用培训文档.ppt`提供了PPT形式的教程,适合初学者快速上手,包括工作空间设置、转换和作业的创建,以及如何执行和调试ETL过程。`ETL%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%AE%9E%E7%...
一旦需要,可以快速恢复DW/DM数据。 3. 检验型Staging数据:在数据仓库系统中,源数据种类繁多,中间转换过程复杂,因此,Staging数据可以用来比较原始数据和DW/DM数据的差异,从而分析ETL处理过程中是否存在错误。 ...
ETL平台分为三个主要模块:ETL元数据驱动模块负责根据配置信息生成ETL作业,ETL调度模块配置调度并结合数据质量校验控制执行,而ETL元数据管理模块则用于管理和检索ETL配置信息。 2.1.2.2 ETL平台技术架构 技术...
Beeload的标准版快速入门内容涵盖了ETL(抽取、转换、装载)、数据同步、文件同步、邮件通知、工作流调度、数据分析等常用操作。 首先,Beeload软件的安装包括硬件环境、软件环境和下载安装三个部分。硬件环境要求...
ETL Automation 使用手册 Version 2.6.0 中文 ETL Automation 是一个数据集成平台,旨在提供一个自动化的数据集成解决方案。下面是对 ETL Automation 使用手册 Version 2.6.0 中文的详细知识点解释。 ETL ...
* 小型快速式:使用小型快速的 ETL 工具和组件来实现 ETL 的自动化和高效化。 * 复杂调优式:使用复杂的 ETL 工具和组件来实现 ETL 的自动化和高效化。 ETL 设计规范 ETL 设计规范是指在 ETL 过程中,对于数据的...
Java分布式ETL(Extract, Transform, Load)框架是用于大数据处理的一种关键技术,它涉及从各种数据源抽取数据,经过转换处理后,加载到目标存储系统的过程。在Java中,实现分布式ETL可以利用多线程、分布式计算以及...
ETL(Extract, Transform, Load)是数据仓库和大数据处理中的关键步骤,它...无论是对于初学者还是经验丰富的数据工程师,都能从中受益,快速实现数据抓取、清洗和加载的任务,助力企业在数据驱动的决策中取得优势。
“达梦ETL批量流程向导”是达梦数据库管理系统提供的一个功能模块,旨在帮助用户通过简单的向导式操作实现批量数据转换任务的快速创建与管理。该工具支持多种数据源类型,并能够针对特定需求自定义转换逻辑,极大地...
在【快速入门】这一章节中,首先介绍了如何创建ETL方案。用户需登录久其ETL的客户端,通过“文件 - 新建”或使用工具栏上的新建按钮来启动新方案的创建。新方案会自动生成多个文件夹,包括数据连接、参数和控制流等...
ETL(Extract, Transform, Load)是数据仓库领域中的关键过程,用于从各种源系统抽取数据,转换数据以满足特定需求,然后加载到目标数据库或数据仓库中。在这个主题中,我们将深入探讨ETL工具的开源特性以及配置使用...
### ODS ETL体系建设 #### 数据整合技术架构与ETL流程设计 在现代银行的数据仓库建设和业务智能(Business Intelligence, BI)项目中,ETL(Extract-Transform-Load,提取-转换-加载)是一个至关重要的组成部分。...
5. **技术支持与文档**:良好的技术支持和服务可以帮助快速解决问题,详尽的文档则有助于提高工作效率。 6. **成本效益**:权衡工具的功能与价格,选择性价比高的产品。 #### 制定ETL解决方案 一旦选择了合适的ETL...
BI项目中ETL设计与思考.docx DataStage(ETL)技术总结.docx ETL增量抽取.docx ETL增量抽取方式.docx ETL工具点评.docx ETL常见性能瓶颈.docx ETL构建企业级数据仓库五步法.docx ETL高级教程.docx 三大主流ETL工具选型...
1. ETL的定义:是数据抽取(Extract)、转换(Transform)、清洗(Cleansing)、装载(Load)的过程。是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据...
BI ETL ELT Kettle 基础知识中文文档汇总 BI项目中ETL设计与思考.pdf CTL工具.pdf ETL-开发规范.pdf ETL_--_事实表.pdf ETL_文档.pdf ETL_架构.pdf ETL_调度系统技术方案说明书_V1.0.pdf ETL中的数据清洗...