微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将参数设置为Microsoft SQL Server以设置环境

如何解决将参数设置为Microsoft SQL Server以设置环境

我创建了一些Microsoft sql Server查询,以将值插入到创建的某些表中。 下面是我使用的SQL查询

INSERT INTO dev_data.extract VALUES ('a-dev-extract','/dev/dev_data/storage/a' ;
INSERT INTO dev_data.extract VALUES ('b-dev-extract','/dev/dev_data/storage/b' ;
INSERT INTO dev_data.extract VALUES ('c-dev-extract','/dev/dev_data/storage/c' ;
INSERT INTO dev_data.extract VALUES ('d-dev-extract','/dev/dev_data/storage/d' ;
INSERT INTO dev_data.extract VALUES ('e-dev-extract','/dev/dev_data/storage/e' ;
INSERT INTO dev_data.extract VALUES ('f-dev-extract','/dev/dev_data/storage/f' ;

以上是我在 dev 环境中使用的一段代码。 生产时应使用与 prod 相同的代码,而不是 dev

是否可以通过参数化dev和prod来实现这一目标?

例如,让我们进行一个查询,如下所示:

INSERT INTO dev_data.extract VALUES ('a-dev-extract','/dev/dev_data/storage/a' ;

产品的预期输出如下:

INSERT INTO prod_data.extract VALUES ('a-prod-extract','/prod/prod_data/storage/a' ;

是的,我可以使用记事本来查找dev并将其替换为prod,但是最终目的是保留可在不同环境中使用的通用代码

我尝试过如下操作:

DECLARE @env varchar;
SET @env = 'dev';
INSERT INTO @env+_data.extract VALUES ('a-+@env+-extract','/@env/@env+_data/storage/a' ;

尝试过

SET @env = 'dev'
SELECT 'INSERT INTO ' + @env + '_data.extract VALUES (''a-' + @env + '-extract'',''/' + @env + '/' + @env + '_data/storage/a'')'

正在将输出作为字符串获取,而不执行查询。 如何执行此查询部分?除了SELECT之外,我们还需要添加其他命令吗?

任何潜在客户均表示赞赏!

解决方法

您可以尝试以下方法:

WITH cte(min_ts,max_ts,buckets) AS (  -- interval and nr of buckets here
   SELECT timestamp '2019-01-01T00:00:00',timestamp '2019-01-02T00:00:00',2
   )
SELECT b.*,min_ts + ((c.max_ts - c.min_ts) / c.buckets) * (bucket-1) AS lower_bound
FROM  (
   SELECT width_bucket(extract(epoch FROM t.created_at),extract(epoch FROM c.min_ts),extract(epoch FROM c.max_ts),c.buckets) AS bucket,count(*) AS ct
   FROM   tbl t
   JOIN   cte c ON t.created_at >= min_ts  -- incl. lower
               AND t.created_at <  max_ts  -- excl. upper
   GROUP  BY 1
   ORDER  BY 1
   ) b,cte c;

快照: enter image description here

更新的查询:

SET @env = 'dev';
SELECT CONCAT("INSERT INTO ",@env,"_data.extract VALUES (","'a-","-extract','/","/","_data/storage/a')") FROM DUAL

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。