历史版本17 :SQL脚本 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

[helpvideo]5453[/helpvideo]

1.1 版本

FineDataLink 版本功能变动
1.0-
4.1.3脚本配置Tab下,数据源是 MySQL、Oracle、SQLServer 时,可调用存储过程

1.2 应用场景

当用户需要对数据库中的数据进行处理时,例如创建、更新、删除、读取、汇总这样的操作,此可以通过「SQL脚本」节点实现。

25.png

1.3 功能简介

1)可通过 SQL 语句对数据进行处理。

选择数据源类型和数据连接后,写 SQL 语句对数据进行处理即可。需注意的是:

  • SQL 语句的语法要按照连接的数据库类型来写

  • 可以在 SQL 语句中引用 自定义的参数 或上游节点的参数赋值,进行数据库增删改,例如:注:SQL 脚本中引用参数方式详情参见:使用参数说明

1702889254370234.png

2)数据源是 MySQL、Oracle、SQLServer 时,可调用存储过程。详情请参见:定时任务调用数据库存储过程




2. 示例编辑

在本示例中,我们在数据开发中使用「SQL脚本」节点创建两张表,插入数据并将其中一张表的数据汇总处理后存到另一张表里去。

2.1 创建数据库表

1)新建定时任务。

2)拖入「SQL脚本」节点,如下图设置,SQL 语句的作用是创建两个表 order1 和 order2 ,且它们有相同的字段 ID 和 inventory 。

16.png

SQL 语句为:

CREATE table if not exists order1
(
  ID int,
  inventory int
 );
 create table if not exists order2
 (
   ID int,
   inventory int
   );

3)点击「节点信息」Tab,节点名称修改为「创建数据库表」。如下图所示:

17.png

2.2 表中插入数据

1)再拖入一个SQL脚本节点,如下图设置,SQL 语句的作用是将 9 条数据插入到表 order1 中去。

18.png

SQL 语句为:

insert into
  order1 (id, inventory)
values
  (1, 20);
insert into
  order1 (id, inventory)
values
  (1, 21);
insert into
  order1 (id, inventory)
values
  (1, 22);
insert into
  order1 (id, inventory)
values
  (2, 23);
insert into
  order1 (id, inventory)
values
  (2, 24);
insert into
  order1 (id, inventory)
values
  (2, 25);
insert into
  order1 (id, inventory)
values
  (3, 26);
insert into
  order1 (id, inventory)
values
  (3, 27);
insert into
  order1 (id, inventory)
values
  (3, 28);

2)点击节点信息Tab,节点名称修改为「order1插入数据」。如下图所示:

19.png

2.3 数据汇总

1)再拖入一个SQL脚本节点,如下图设置,SQL 语句的作用是将 order1 的数据分类汇总后插入到 order2 中。

20.png

SQL 语句为:

insert into order2
select ID,sum(inventory) from order1 group by ID

2)点击节点信息Tab,节点名称修改为汇总插入order2」。如下图所示:

21.png

2.4 运行任务

点击「保存并运行」按钮,运行成功后,日志如下图所示:

22.png

运行成功后,可以看到数据库中多了两张表:

order1:

1702888567653543.png

order2:

1702888606641571.png

3. 节点支持的SQL语法编辑

注:「SQL 脚本」节点暂不支持 MERGE 语句。

类型语法作用
数据处理insert
插入数据
delete删除数据
update修改数据
select查询数据
数据库表操作create table创建数据库表
drop table删除数据库表

4. 注意事项编辑

4.1 SQL 语句注释说明

4.0.17 版本之前,FineDataLink 忽略对 SQL 语句注释的处理;4.0.17 及之后版本,SQL 语句的注释交给数据库执行。

用户需注意 SQL 语句注释的书写规范:单行注释之后要有一个空格;Hive 数据源不支持多行注释。

4.2 使用 drop 语句报错

问题描述:

4.0.28 及之后版本,SQL 语句中使用了 drop 语句,报错:无法使用关键字,且无法关闭sql防注入功能

原因分析:

「数据同步」和「数据转换」节点中加入了 sql 防注入校验。

解决方案:

可在「SQL脚本」中使用 drop 语句,数据同步、参数赋值、数据转换中不支持 drop 语句。