找回密码
 立即注册

QQ登录

只需一步,快速开始

swejet 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-8-24 18:40  /   查看:3328  /  回复:13
100金币
本帖最后由 swejet 于 2021-8-25 08:51 编辑

先把需求说一下:

有一个设备运行表,每天记录设备的运行情况。每天运行的设备不确定,只有运行的设备才有记录,因此每天生成的设备运行记录的条数是不确定的,每天都不一样。

这个数据库不开放,只提供了一个数据API接口,通过这个接口把数据请求回来。我使用“发送HTTP请求命令”向这个api接口发送请求,返回的数据是一个流,我通过流转字符串把请求回来的数据先转成字符串,这个字符串是一个xml格式,再把xml格式转成json,再把json反序列化,最后存入另外一个我有权限的数据库中。

可以理解为,我是合法地把数据从一个数据库中复制到另一个数据库中,因为源数据库不开放,只能用这种方式获取数据。

数据量非常大,如果一次性请求回来就崩了,api接口也不允许这么大量的数据请求,一次请求只能请求回一天的运行记录。当我要请求回来10年的数据时,我就只能通过循环命令来做了。

发送请求时,我是把一条 oracle 的查询语句当成请求的参数给接口发回去的,这个参数是以下一条语句:

select * from 设备运行表 where run_date = to_date('2000-01-01','yyyy-mm-dd')

我要在每一次循环中替换上面这条语句中的那个日期,而且每循环一次,日期加1



这是外层循环,我初始设定了 365,即一次取一年的数据,那么

问题1:当命令执行进来的时候,“当前循环索引值变量”是不是会自动加1?

在发送请求的命令中的参量:



就是这个sql参量



我在这里,要怎么才能把这个字符串中变化的那个日期与循环结合起来呢?

我原来以为这里可以写 excel 的公式,我可以用 & 拼串,可是这是服务端命令,excel 公式不好使了

我该怎么办?
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

大佬,首先当前循环索引值变量会根据每次循环加1,这个简单的试一下就知道了~ 其次日期可以直接通过计算来得到想要的值,我传入了一个日期参数, =TEXT(日期,"yyyy-mm-dd"),可以把日期的数字格式转化为文本格式, =日期+1,可以把日期加一天, 最后,发送http请求命令中是可以写公式的,用公式把字符串拼起来就好了~

13 个回复

倒序浏览
最佳答案
最佳答案
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-8-24 18:40:34
来自 5#
本帖最后由 Lay.Li 于 2021-9-15 10:09 编辑

大佬,首先当前循环索引值变量会根据每次循环加1,这个简单的试一下就知道了~
其次日期可以直接通过计算来得到想要的值,我传入了一个日期参数,
=TEXT(日期,"yyyy-mm-dd"),可以把日期的数字格式转化为文本格式,

=日期+1,可以把日期加一天,


最后,发送http请求命令中是可以写公式的,用公式把字符串拼起来就好了~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
陈工
初级会员   /  发表于:2021-8-24 18:53:04
2#
先坐个沙发,看看高手怎么解决问题,
回复 使用道具 举报
孤狼悬赏达人认证 活字格认证
高级会员   /  发表于:2021-8-24 22:03:20
3#
好家伙,这么复杂的问题,1金币怕是搞不定吧,光看懂你的说明就得20分钟往上了
回复 使用道具 举报
swejet悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-8-24 22:15:20
4#
明天加到100,光顾着发贴了没想到悬赏这事儿
回复 使用道具 举报
swejet悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-8-25 20:03:19
6#
我比较笨,没太看懂,是好多地方都没看懂,先说第一个:



这里“指定循环次数或循环数组”里写的“=数组参数”,这个数组参数是一个变量吗?

这里的官方说明如下:
如果指定了循环次数,可使用 =Index 获取当前的循环索引值,索引值从1开始。
如果指定了循环数组,也可使用 =Index 获取当前的循环索引值,还可以使用 =Item 从数组中获取当前的循环对象。

在后面的截图中,再也没有出现这个数组参数,这个数组参数是谁?值是多少?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
阿享悬赏达人认证
银牌会员   /  发表于:2021-8-25 22:15:43
7#
swejet 发表于 2021-8-25 20:03
我比较笨,没太看懂,是好多地方都没看懂,先说第一个:

数组参数就是数组类型的变量,
=index就是1,2,3...
=item就是每次循环取出来的值 = 数组[index]
你可以先 生成查询的日期到数据库,再取出来循环拼接sql
回复 使用道具 举报
swejet悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-8-26 09:27:51
8#
本帖最后由 swejet 于 2021-8-26 10:22 编辑
阿享 发表于 2021-8-25 22:15
数组参数就是数组类型的变量,
=index就是1,2,3...
=item就是每次循环取出来的值 = 数组

"数组参数"是一个变量名吗?比如,我写成 =value_array 可以吗?
回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-8-26 10:25:05
9#
swejet 发表于 2021-8-26 09:27
"数组参数"是一个变量名吗?

是的,数组参数是一个变量,
只不过这个这个循环可能用不到他本身,
只是利用他来开启一个数组,他也可以是一个数字,比如100,
就代表要循环100次
回复 使用道具 举报
swejet悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-8-26 10:42:25
10#
Joe.xu 发表于 2021-8-26 10:25
是的,数组参数是一个变量,
只不过这个这个循环可能用不到他本身,
只是利用他来开启一个数组,他也可 ...

所以在 David.Zhong 的回答中,这个名为”数组参数“的变量其实确实是没有用到的对吧?我没看懂就是在这里,我看不到这个”数组参数“被调用的痕迹

我是不是可以这样理解,如果我直接写一个数值,那么就是一个定长循环,这个数值就是循环的次数,步长永远是1,如果写”=“并且跟一个字符串,就是定义了一个名字是这个字符串的数组,然后在循环体中,可以给这个数组的元素去赋值,去做各种操作

这样理解对吗?

评分

参与人数 1金币 +5 收起 理由
Joe.xu + 5 很给力!

查看全部评分

回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部