snowflake-cloud-data-platform - 雪花:自动克隆过程
问题描述
要求:我正在研究如何每天自动化从 Prod 到 dev 的克隆过程
Python 或存储过程
解决方案
您可以使用单行 SQL 语句克隆数据库;但是,我测试了在 SQL 存储过程中运行它,它不会在 SQL 存储过程中运行 create 语句。JavaScript 存储过程将起作用。
由于所有 Snowflake 任务都需要存储过程才能运行,因此如果要使用任务,则需要 JavaScript 存储过程。
这是一个示例:
-- Recommend you do not store the SP in a database you'll be cloning
create or replace procedure UTIL_DB.PUBLIC.CLONE_MY_DB()
returns string
language javascript
as
$$
return executeNonQuery('create or replace database TEST2 clone TEST1');
function executeNonQuery(queryString) {
var out;
cmd1 = {sqlText: queryString};
stmt = snowflake.createStatement(cmd1);
var rs;
rs = stmt.execute();
rs.next();
return rs.getColumnValue('status');
return out;
};
$$;
-- Make sure the SP works
drop database if exists TEST2;
call UTIL_DB.PUBLIC.CLONE_MY_DB();
-- Create a task calling the SP.
-- Use CRON syntax to get productionized
-- https://docs.snowflake.com/en/sql-reference/sql/create-task.html
create task MY_CLONE_TASK
warehouse = TEST
schedule = '1440 minute'
as call UTIL_DB.PUBLIC.CLONE_MY_DB();
请记住,默认情况下您的任务未启用。您需要为要运行任务的角色执行以下操作:
use role ACCOUNTADMIN;
grant execute task on account to role SYSADMIN;
use role SYSADMIN;
alter task UTIL_DB.PUBLIC.MY_CLONE_TASK resume;
推荐阅读
- c# - 如何在按钮单击事件中隐藏gridview列在gridview之外
- r - dplyr 或矢量化方法中的动态变量评估
- javascript - 在 VueJs 中使用 Vue-Router 获取参数失败
- windows - 使用默认 Windows 登录环境从 Cygwin 运行批处理文件
- android - React 中的多张图片上传
- crystal-lang - 如何升级琥珀框架?
- nginx - nginx proxy_pass 从根加载资产
- sqlalchemy - SQLAlchemy create engine with echo=True from config file
- javascript - 如何使用 jquery clone 增加每次点击的 TR?
- javascript - 使用同步融合图表 JS1 的 y 轴上的类别