如何解决将参数设置为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;
更新的查询:
SET @env = 'dev';
SELECT CONCAT("INSERT INTO ",@env,"_data.extract VALUES (","'a-","-extract','/","/","_data/storage/a')") FROM DUAL
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。