薪火数据DataInside脚本语法说明

1 DataInside脚本语法说明

1、关键字、函数、参数等必须为小写。比如log_into_db、execute、set_db_by_name等

2、字符串必须以””包括起来,且关键字与字符串中间必须用户括号包括起来。比如:log_into_db("查询表数据"),其中log_into_db为关键字,” 查询表数据”为字符串。

3、SQL语句必须使用关键字execute(“……”)或execute(""“……”"")包括起来。也可以接收自定义变量和日期函数

例:

int c = 1; /*自定义变量*/

execute (“select Id, Name, ‘{today()}’ DAY from User where ID=${c} “);

注:一个execute(“”)中只能执行一个SQL语句

4、每一个代码块必须以分号结束。如for循环和execute结束

例:

for (int i = 0 ; i <10; i++ )

{

log_into_db("${i}");

};

execute(" select * from user ");

5、DataInside脚本语法支持for循环。

例:

for (int i = 0 ; i <10; i++ )

{

log_into_db("${i}");

};

6、日期函数及自定义变量使用注意事项,日期函数在使用时需使用{}将日期函数包括起来,自定义变量需使用${}把变量名包含起来

例:

日期函数: today()

log_into_db("{today()}");

自定义变量

int C = 1;

log_into_db("${C}"); /*自定义变量区分大小写*/

7、当函数带有多个参数时,则每个参数间必须以英文状态的逗号隔开。

例:

主机函数

getCpu("root","root", "127.0.0.1");

8、if 判断语句

例:判断表名是否存在,不存在则创建

boolean c=table_exists("地区收入明细表");

if (!c){

execute(" CREATE TABLE 地区收入明细表

(

商品编号 varchar(255),

品类 varchar(255),

金额 bigint,

销售日期 varchar(255),

分公司 varchar(255)

)

");

};

9、注释:支持单行和多行,单行以#号注释,多行以/**/进行注释

例:

单行:#

#log_into_db("单行注释");

多行:/**/

/*for (int i = 0 ; i <10; i++ )

{ Boolean aac = log_into_db("${i}");

log_into_db("${aac}");

}; */

2 DataInside脚本函数

2.1 日期函数

now()

用途:返回当前日期时间

示例:TABLE_NAME表结构为:

A_COLUMNB_COLUMNTIME
DHSWACKDHU

执行语句:

UPDATE TABLE_NAME SET TIME=('{now()}')

返回结果:

A_COLUMNB_COLUMNTIME
DHSWACKDHU2020-12-03 11:05:19

today()

用途:返回当前日期

示例:TABLE_NAME表结构为:

A_COLUMNB_COLUMNTODAY
DHSWACKDHU

执行语句:

UPDATE TABLE_NAME SET TODAY=('{today()}')

返回结果:

A_COLUMNB_COLUMNTODAY
DHSWACKDHU2020-10-28

yyyymmdd()

用途:返回日期年月日,数值前面补0,可在括号里加减偏移日期。

示例:当前日期为20201026,TABLE_NAME表结构为:

YMD1YMD2YMD3

执行语句:

INSERT INTO TABLE_NAME(YMD1,YMD2,YMD3) VALUES ('{yyyymmdd()}', '{yyyymmdd(2)}', '{yyyymmdd(-2)}')

返回结果:

YMD1YMD2YMD3
202010262020102820201024

yyyy-mm-dd()

用途:返回日期年月日,数值前面补0,可在括号里加减偏移日期。

示例:当前日期为2020-10-26,TABLE_NAME表结构为:

YMD1YMD2YMD3

执行语句:

INSERT INTO TABLE_NAME(YMD1,YMD2,YMD3) VALUES ('{yyyy_mm_dd()}', '{yyyy_mm_dd(2)}', '{yyyy_mm_dd(-2)}')

返回结果:

YMD1YMD2YMD3
2020-10-262020-10-282020-10-24

dd()

用途:返回两位数日期号数,数值前面补0,可在括号里加减偏移号数

示例:当前日期为20201201,TABLE_NAME表结构为:

DD1DD2DD3

执行语句:

INSERT INTO TABLE_NAME(DD1,DD2,DD3) VALUES ('{dd()}', '{dd(2)}', '{dd(-2)}')

返回结果:

DD1DD2DD3
010329

day()

用途:返回日期号数,数值前面不补0,可在括号里加减偏移号数

示例:当前日期为20201201,TABLE_NAME表结构为:

DD1DD2DD3

执行语句:

INSERT INTO TABLE_NAME(DD1,DD2,DD3) VALUES ('{day()}', '{day(2)}', '{day(-2)}')

返回结果:

DD1DD2DD3
1329

mmdd()

用途:返回日期月日,数值前面补0,可在括号里加减偏移日期。

示例:当前日期为20201201,TABLE_NAME表结构为:

MMDD1MMDD2MMDD3

执行语句:

INSERT INTO TABLE_NAME(YMD1,YMD2,YMD3) VALUES ('{mmdd()}', '{mmdd(2)}', '{mmdd(-2)}')

返回结果:

MMDD1MMDD2MMDD3
120112031129

mm_dd()

用途:返回日期月日,数值前面补0,可在括号里加减偏移日期。

示例:当前日期为20201201,TABLE_NAME表结构为:

MMDD1MMDD2MMDD3

执行语句:

INSERT INTO TABLE_NAME(YMD1,YMD2,YMD3) VALUES ('{mm_dd()}', '{mm_dd(2)}', '{mm_dd(-2)}')

返回结果:

MMDD1MMDD2MMDD3
12-0112-0311-29

yyyymm()

用途:返回日期年月,可在括号里加减偏移日期。

示例:当前日期为20201201,TABLE_NAME表结构为:

YM1YM2YM3

执行语句:

INSERT INTO TABLE_NAME(YM1,YM2,YM3) VALUES ('{yyyymm()}', '{yyyymm(2)}', '{yyyymm(-2)}')

返回结果:

YM1YM2YM3
202012202102202010

yyyy_mm()

用途:返回日期年月,可在括号里加减偏移日期。

示例:当前日期为20201201,TABLE_NAME表结构为:

YM1YM2YM3

执行语句:

INSERT INTO TABLE_NAME(YM1,YM2,YM3) VALUES ('{yyyy_mm()}', '{yyyy_mm(2)}', '{yyyy_mm(-2)}')

返回结果:

YM1YM2YM3
2020-122021-022020-10

mm()

用途:返回日期月份,个位数前补0,可在括号里加减偏移日期。

示例:当前日期为20201201,TABLE_NAME表结构为:

MM1MM2MM3

执行语句:

INSERT INTO TABLE_NAME(MM1,MM2,MM3) VALUES ('{mm()}', '{mm(2)}', '{mm(-2)}')

返回结果:

MM1MM2MM3
010311

month()

用途:返回日期月份,个位数前不补0,可在括号里加减偏移日期。

示例:当前日期为20201201,TABLE_NAME表结构为:

MM1MM2MM3

执行语句:

INSERT INTO TABLE_NAME(MM1,MM2,MM3) VALUES ('{month()}', '{ month(2)}', '{ month(-2)}')

返回结果:

MM1MM2MM3
1311

year()

用途:返回日期年份,可在括号里加减偏移日期。

示例:当前日期为20201201,TABLE_NAME表结构为:

YEAR1YEAR2YEAR3

执行语句:

INSERT INTO TABLE_NAME(YEAR1,YEAR2,YEAR2) VALUES ('{year()}', '{year (2)}', '{year (-2)}')

返回结果:

YEAR1YEAR2YEAR3
202020222018

lastmonthcurday()

用途:返回上月当天日期,若当天31号而上月不足31天,则返回上月最后一天日期,可在括号里加减偏移日期。

示例:当前日期为20201201,TABLE_NAME表结构为:

A_COLUMNB_COLUMNLASTCD
DHSWACKDHU

执行语句:

UPDATE TABLE_NAME SET LASTCD=('{lastmonthcurday()}')

返回结果:

A_COLUMNB_COLUMNLASTCD
DHSWACKDHU20201101

last_month_curday()

用途:返回上月当天日期,若当天31号而上月不足31天,则返回上月最后一天日期,可在括号里加减偏移日期。

示例:当前日期为20201201,TABLE_NAME表结构为:

A_COLUMNB_COLUMNLASTCD
DHSWACKDHU

执行语句:

UPDATE TABLE_NAME SET LASTCD=('{last_month_curday()}')

返回结果:

A_COLUMNB_COLUMNLASTCD
DHSWACKDHU2020-11-03

fistday()

用途:返回某月第一天日期,数值前面补0,可在括号里加减偏移月份。

示例:当前日期为20201203,TABLE_NAME表结构为:

FISTDAY1FISTDAY2FISTDAY3

执行语句:

INSERT INTO TABLE_NAME (FISTDAY1, FISTDAY2, FISTDAY3) VALUES ('{fistday()}', '{fistday(2)}', '{fistday(-2)}')

返回结果:

FISTDAY1FISTDAY2FISTDAY3
202012012021020120201001

fist_day()

用途:返回某月第一天日期,数值前面补0,可在括号里加减偏移月份。

示例:当前日期为20201203,TABLE_NAME表结构为:

FISTDAY1FISTDAY2FISTDAY3

执行语句:

INSERT INTO TABLE_NAME (FISTDAY1, FISTDAY2, FISTDAY3) VALUES ('{fist_day()}', '{fist_day(2)}', '{fist_day(-2)}')

返回结果:

FISTDAY1FISTDAY2FISTDAY3
2020-12-012021-02-012020-10-01

lastday()

用途:返回某月最后一天日期,数值前面补0,可在括号里加减偏移月份。

示例:当前日期为20201203,TABLE_NAME表结构为:

LASTDAY1LASTDAY2LASTDAY3

执行语句:

INSERT INTO TABLE_NAME (LASTDAY1, LASTDAY2, LASTDAY3) VALUES ('{lastday()}', '{lastday(2)}', '{lastday(-2)}')

返回结果:

LASTDAY1LASTDAY2LASTDAY3
202012312021022820201031

last_day()

用途:返回某月最后一天日期,数值前面补0,可在括号里加减偏移月份。

示例:当前日期为20201203,TABLE_NAME表结构为:

LASTDAY1LASTDAY2LASTDAY3

执行语句:

INSERT INTO TABLE_NAME (LASTDAY1, LASTDAY2, LASTDAY3) VALUES ('{last_day()}', '{last_day(2)}', '{last_day(-2)}')

返回结果:

LASTDAY1LASTDAY2LASTDAY3
2020-12-312021-02-282020-10-31

2.2 SQLDML函数

drop_table()

用途:可删除单表或多表。

语法:drop_table("t1, t2")

示例:

drop_table("table_name1");

drop_table("table_name1,table_name2");

truncate_table()

用途:清空表数据,可清空单表或多表。

语法:truncate_table("t1, t2")

示例:

truncate_table("table_name1");

truncate_table("table_name1,table_name2");

create_table()

用途:根据源表格式创建新表。

语法:create_table(table_name, like_name)

table_name:原表表名

like_name:要创建的表表名

示例:根据table_name1创建table_name2

create_table("table_name2","table_name1");

table_exists()

用途:检查表是否存在。

示例:如果没有表TBALE_NAME则创建表,如果有表TBALE_NAME则插入数据。

If(table_exists("TBALE_NAME"))

{ execute (" CREATE TABLE TBALE_NAME

(

A_COLUMN VARCHAR(100),

B_COLUMN VARCHAR(100),

C_COLUMN VARCHAR(100)

)

");

}

else{

execute (" INSERT INTO TBALE_NAME ( A_COLUMN,B_COLUMN,C_COLUMN) VALUES('5','6','7') ");

};

column_exists()

用途:检查列是否存在。

示例:如果表TBALE_NAME里没有D_COLUMN列,则增加列;如果有D_COLUMN列则更新列;

if (column_exists("D_COLUMN")

{

execute (" ALTER TABLE TBALE_NAME ADD D_COLUMN INT ");

}

else{

execute (" UPDATE TBALE_NAME SET A_COLUMN=10 ");

};

2.3 SQL查询函数

execute()

用途:执行sql无返回;

示例:更新表字段

execute (" UPDATE TBALE_NAME SET A_COLUMN=10 ");

execute_obj()

用途:执行sql返回字符串;

示例:查询表行数

String s=execute_obj(" select count(1) from TBALE_NAME ");

execute_data()

用途:执行sql返回数据集;

示例:查询表数据集

List<HashMap<String,String>> s=execute_obj(" select * from TBALE_NAME ");

2.4 日志输出函数

log_into_db()

用途:写日志到数据库。

语法:log_into_db(message);

message:文本,日志内容;

示例:

log_into_db("这是一段测试"); 返回:"这是一段测试"
log_into_db("{yyyymmdd()}"); 返回:”20201204”

2.5 跨库转换函数

set_db_by_name()

用途:根据名称选择数据库,后续的脚本将在这个数据库下执行。

示例:

set_db_by_name("EM_CN")

sourceDb_to_targetDb()

用途:从一个数据库迁移表数据到另外一个数据库。

语法:data_gbasetogbase(from_db,sql, from_table_name, table_name)

from_db:源数据库名

sql:sql语句

from_table_name:源表名

table_name:目标表名

示例:

data_gbasetogbase("em_cn", "", "EM_BAS_LZ_LOGIN_INFO","EM_BAS_LZ_LOGIN_INFO");

data_gbasetogbase("em_cn", "select * from EM_BAS_LZ_LOGIN_INFO", "","EM_BAS_LZ_LOGIN_INFO" );

2.6 主机函数

getCpu()

用途:查询linux主机cpu内存使用情况。

语法:getCpu(user,password,ip);

user:用户名

password:密码

ip:主机ip

示例:查询主机ip

getCpu("root","root", "127.0.0.1");

2.7 企业微信对接接口函数

get_qw_to_db_multi()

用途:获取企业微信接口的数据集并存入指定表

语法:get_qw_to_db_multi(https,corpid,corpsecret,httpDataJsonObject,fieldsJsonObject,tableName);

https:请求的ip地址

corpid:企业id

corpsecret:接口Secret

httpDataJsonObject:接口参数json

fieldsJsonObject:接口返回的json对应的表字段

tableName:存入的表名称

示例:获取企业微信客户群列表

jsonObject = new JSONObject(); JSONPath.set(jsonObject,"status_filter",0); JSONPath.set(jsonObject,"owner_filter.userid_list[0]","abel"); JSONPath.set(jsonObject,"cursor","r9FqSqsI8fgNbHLHE5QoCP50UIg2cFQbfma3l2QsmwI"); JSONPath.set(jsonObject,"limit",10); jsonObject1 = new JSONObject(); JSONPath.set(jsonObject1,"group_chat_list[0].chat_id","chat_id"); JSONPath.set(jsonObject1,"group_chat_list[0].status","status"); JSONPath.set(jsonObject1,"next_cursor","next_cursor"); get_qw_to_db_multi("https://qyapi.weixin.qq.com/cgi-bin/externalcontact/groupchat/list","wwc2ec284b7ac1234432","qerfr3443r3f2-tqCYa1vHxg4tuQagBsK2cFM",jsonObject,jsonObject1,"group_chat_list");

get_qw_to_db()

用途:获取企业微信接口的单条数据并存入指定表

语法:get_qw_to_db(https,corpid,corpsecret,httpDataJsonObject,fieldsJsonObject,tableName);

https:请求的ip地址

corpid:企业id

corpsecret:接口Secret

httpDataJsonObject:接口参数json

fieldsJsonObject:接口返回的json对应的表字段

tableName:存入的表名称

示例:获取企业微信客户详情

jsonObject = new JSONObject(); jsonObject1 = new JSONObject(); JSONPath.set(jsonObject1,"external_contact.external_userid","external_userid"); JSONPath.set(jsonObject1,"external_contact.name","name"); JSONPath.set(jsonObject1,"external_contact.avatar","avatar"); JSONPath.set(jsonObject1,"external_contact.corp_name","corp_name"); JSONPath.set(jsonObject1,"external_contact.corp_full_name","corp_full_name"); JSONPath.set(jsonObject1,"external_contact.type","type"); JSONPath.set(jsonObject1,"external_contact.gender","gender"); JSONPath.set(jsonObject1,"external_contact.unionid","unionid"); JSONPath.set(jsonObject1,"external_contact.position","position"); JSONPath.set(jsonObject1,"external_contact.external_userid","external_userid"); get_qw_to_db("https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get?external_userid=ZhangTong&cursor=NEXT_CURSOR","wwc2ec284b7ac97620","2mPKB4Mk5VrSZe9sedD-tqCYa1vHxg4tuQagBsK2cFM",jsonObject,jsonObject1,"externalcontact");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值