分类目录归档:数据库

Kettle: Block a SQL script until other steps finish in one transformation

Kettle转换流程中往往需要在其他步骤执行完后再执行某个步骤,但是Kettle的Transformation中的步骤设计是并行执行的,有一个方法可以打破这个流程,step: block step until steps finish。

a

对于其他step加上它就行了,但是对于Execute SQL Script有一个特别的注意事项,如下图所示,如果不勾选这个的话,它会忽略上述流程设计。可是如果上游输入有多行的话,虽然流程生效了,但是会执行多次,这样一来,也不符合我们的要求,需要再用到另一个工具Generate rows。需要执行一次,就把limit设置为1即可。 b

MSSQL自定义函数:一个字符串在另一个字符串第n次出现的位置

create function fn_findstr(@find varchar(8000), @str varchar(8000), @n smallint)
returns int
as
begin
if @n < 1 return (0)
declare @start smallint, @count smallint, @index smallint, @len smallint
set @index = charindex(@find, @str)
if @index = 0 return (0)
else select @count = 1, @len = len(@find)
while @index > 0 and @count < @n
begin
set @start = @index + @len
select @index = charindex(@find, @str, @start), @count = @count + 1
end
if @count < @n set @index = 0
return (@index)
end

go