kettle的【阻塞数据】、【阻塞数据直到完成】、【执行SQL脚本】

kettle转换中的各个组件是并行的关系,job中是有先后顺序的,这样就可能会遇到一种情况——我想在某个步骤完成后再执行下面的步骤,这时该怎么办呢?那么这时就可以用到【阻塞数据】和【阻塞数据直到完成】两个组件;
【阻塞数据】:这个组件只允许前一个步骤的最后一条数据通过,这个往往和【执行SQL脚本】组件 并用;
【阻塞数据直到完成】:这个组件会将所设置的被阻塞步骤的所有数据堵住,当被阻塞的步骤完成后,才会将被阻塞步骤的所有数据往下一个步骤推;

注:虽然阻塞了,但是阻塞之后的步骤仍然在运行,即运行时间仍然在进行;

【执行SQL脚本】:

这个组件是一个相对比较复杂的组件,在转换中这个组件是运行优先级很高的组件,如果不勾选{执行每一行}这个选项,那么该组件就只会执行一次,勾选了这个选项那么执行次数就是前一个步骤的数据条目数;如果想实现该组件只在最后一步执行一次,那么可以这样来操作

【注】:此时别忘了勾选{执行每一行}这个选项,这个流程的逻辑就是当【表输出】完成后,将其的最后一条数据推过【阻塞数据】,然后执行【执行SQL脚本】,因为勾选了{执行每一行}这个选项,又因为【阻塞数据】只有一条数据,那么【执行SQL脚本】只执行一次;

另外【执行SQL脚本】还有一些其他的选项,如{变量替换}等;
一、当要使用变量时必须勾选{变量替换}这个选项,如果只勾选这个选项,那么变量只能使用${变量名}这样的,且当变量值为字符串时,必须要加单引号,如‘${变量名}’,否则会报错;
二、如果要使用前面步骤的值,那么必须要同时勾选{执行每一行},{变量替换},这时使用变量可以用?代替,这样你才可以编辑下面的参数;
但是还是有几种情况:1.当勾选了{Bind parmaters}时(也就是绑定变量),这时仍然可以使用${变量名}这种方式但字符串时必须要加单引号,但是?就不管值是否是字符串都不用加单引号,否则报错;
2.如果不勾选{Bind parmaters},那么?为字符串是必须加单引号;你可你这样理解,不勾选{Bind parmaters},把?的值当成数字来处理,此时当?为数字或者sql中的中的字段或者sql语句;而勾选了{Bind parmaters},那么就把?的值当成一个带有单引号的字符串;
3.{Quotes String },该选项与“Bind parmaters”选项只能选一个,勾选该选项的作用是,在替换的变量前后两端加上单引号,并且对于特殊字符进行转义,比如条件值中,有单引号时,kettle会自动在单引号前再加一个单引号(在两端单引号的基础上),如想要在数据库中输入‘wang,那么输入的时候就要这样‘‘‘wang‘,第一个和最后一个单引号是标明为字符串,第二个单引号起到的作用是转义符,第三个才是真正需要的文本单引号;此时变量用?,不要加单引号;

注:?的顺序就是你在{参数}选项中编辑的字段的顺序;
若想使用${参数名},那么无论怎么选择当其值只能被当做字符串时必须加单引号,值只能是数字和字符串;

原文地址:http://blog.51cto.com/13602563/2170921

时间: 2024-10-13 21:29:34

kettle的【阻塞数据】、【阻塞数据直到完成】、【执行SQL脚本】的相关文章

Kettle 执行SQL脚本

以下操作都在5.0.1版本下进行开发,其余版本可以进行自动比对 本文将对Kettle5中常用步骤字段选择(又名选择/改名值,英文原名:Select Values)进行详细解释.这个步骤的功能非常强大,主要包括: 选择:选择的字段将按照你指定的顺序加入到输出流中,其他字段一概丢弃.除非你选中包含未选择的列(图1中的第2个控件): 删除:需要从输入流中丢弃的字段: 元数据:需要改变的元数据,包括字段的名称.类型.长度.精度.格式等. 步骤初始化时,需要准备元数据,其顺序是选择.删除.元数据,主要处理

使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作

使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作 Hive Impala HBase HiveQL 大数据 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作 〇.摘要 一.基础环境 二.数据存储在HBase中,使用Hive执行SQL语句 Ⅰ.创建Hive外部表 Ⅱ.从HBase读 Ⅲ.向HBase写 三.数据存储在HBase中,使用Impala执行SQL语句 Ⅰ.从HBase读 Ⅱ.向HBase写 四.综上所述 〇.摘要 Hive是基于Hadoop

Oracle使用超大SQL脚本文件恢复数据问题记录

在以前获取的Oracle数据库备份一般都是dmp文件,创建表空间和用户就直接使用imp或者impdp导入即可. 这一次遇到的情况比较特殊,对方提供数据时给我的是使用SQLPlus导出的SQL脚本文件,是Linux系统中导出的,因为很难让对方再次提供数据,因此只有用这个来导入数据.导入速度慢不说,还挺麻烦,不过没办法,问题总得解决. 在这个过程中遇到两大问题: 1. SQL脚本文件太大(超过1G),Windows上看不了内容,不知道怎么导入到数据库中. 一般SQLPlus执行SQL脚本文件倒是容易

Linux启动kettle及linux和windows中kettle往hdfs中写数据(3)

在xmanager中的xshell运行进入图形化界面 1 sh spoon.sh 新建一个job 1.往hdfs中写数据 1)linux中kettle往hdfs中写数据 双击hadoop copy files 运行此job 查看数据: 1)windows中kettle往hdfs中写数据 Windows中往power服务器中hdfs写数据 日志: 2016/07/28 16:21:14 - Version checker - OK 2016/07/28 16:21:57 - 数据整合工具-作业设计

kettle中访问前一行数据

 kettle中访问前一行数据 在kettle中,当需要访问数据流前一行数据时,很多人都是用javascript步骤的特性:实际上没有必要,不是说javascript步骤不好,主要是性能低,同时也增加了复杂度,因为写代码让javascript步骤难以理解,最好是使用kettle标准步骤实现.我们的原则是代码最小化,过程轻松. (The Analytic Query Step)分析查询步骤 TheAnalytic Query 步骤可以查找数据流中的前面行或后面行,并且取值到当前行,很多场合是非

理解同步异步与阻塞非阻塞

本篇文章我准本从三个大方面来解释下同步异步.阻塞非阻塞的知识,第一个方面主要是说下,到底什么是同步异步.阻塞非阻塞:第二个方面主要是解释下在I/O场景下,同步异步阻塞非阻塞又是怎么定义的,第三个方面介绍下在unix下同步异步又有哪些阻塞非阻塞IO. 1.同步异步与阻塞非阻塞 首先从大的方面来说,"阻塞"与"非阻塞"与"同步"与"异步"不能简单的从字面理解,提供一个从分布式系统角度的回答. 1).同步与异步 同步和异步关注的是消

同步/异步与阻塞/非阻塞

一.同步与异步同步/异步, 它们是消息的通知机制 1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 按照这个定义,其实绝大多数函数都是同步调用(例如sin isdigit等).但是一般而言,我们在说同步.异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务.最常见的例子就是 SendMessage.该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回.当对方处理完毕以后,该函数才把消息处理函数所返回的值返回给调用者. B.

讲一讲什么叫阻塞非阻塞同步异步

1.讲一讲什么叫阻塞非阻塞同步异步全是用来形容方法的,形容一个方法返回值状态的. 2.io读取,网络读取,jdbc读取,这些流的操作都是bio的,都是阻塞的. 3.所以沃恩一般在处理io操作时,都采用多线程来提高bio的效率. 4.io操作,就是本地文件,网络,数据嘛嘛.所以在这三种读取数据时,都要采用多线程提高效率. 5.多线程处理阻塞方法时,只不过是避免了主线程的阻塞,但是让子线程,也就是处理每个http request的线程去发生阻塞了. 6.传统的古老的开发方式: 单线程执行阻塞方法->

基础入门_Python-网络编程.分分钟掌握阻塞/非阻塞/同步/异步IO模型?

概念梳理: 故事独白: 满满爱喝茶,废话不多说,开始煮开水. 出场人物: 满满, 普通水壶, 高级水壶(水开会响) 1. 满满把水壶放在火上, 站在那里等水开(同步阻塞) 满满觉得自己有点儿傻逼~ 2. 满满把水壶放在火上,去客厅看电视,时不时的去厨房瞅瞅水开木有(同步非阻塞) 满满觉得自己还是有点傻~,于是买了个高级水壶, 水开后会响~ 3. 满满把高级水壶放在火上, 站在那里等水开(异步阻塞) 满满想高级水壶水开会自己叫~为毛不去看个电视哪? 4. 满满把高级水壶放在火上, 去客厅看电视,