一次在 Snowflake 中删除多种文件格式
Dropping multiple file formats in Snowflake at once
我需要在 Snowflake 中删除特定模式的多种文件格式(大约 70 种)。我浏览了文档并尝试了一些变通方法,但找不到任何自动执行的方法。
示例:
schema - work
file formats - work_123, work_234, preview_567, preview_561, match_897, match_565
这不是完全自动化的 - 但如果这是一次性任务,则编写一个存储过程来完全自动化它可能有点矫枉过正。
运行 显示文件格式
根据上一个命令的结果构造删除语句:
SELECT 'DROP FILE FORMAT '||"名称"||';'
来自 table(result_scan(last_query_id()));
复制上一步的输出并运行它到你的UI
它可以通过 Snowflake 脚本实现完全自动化:
DECLARE
SCHEMA_NAME STRING := 'WORK';
FORMAT_NAME_PATTERN STRING := '%';
QUERY STRING;
BEGIN
SELECT CONCAT('BEGIN', CHAR(10)
,LISTAGG(CONCAT('DROP FILE FORMAT IF EXISTS '
,FILE_FORMAT_SCHEMA, '.', FILE_FORMAT_NAME, ';', CHAR(10)), '')
,'END')
INTO :QUERY
FROM INFORMATION_SCHEMA.FILE_FORMATS
WHERE FILE_FORMAT_SCHEMA ILIKE :SCHEMA_NAME
AND FILE_FORMAT_NAME ILIKE :FORMAT_NAME_PATTERN ESCAPE '!'
GROUP BY GROUPING SETS(());
QUERY := COALESCE(QUERY, 'SELECT ''No file format found''');
-- Uncomment to run
-- EXECUTE IMMEDIATE :QUERY;
RETURN :QUERY;
END;
示例数据:
CREATE SCHEMA WORK;
CREATE FILE FORMAT work_123 TYPE=csv;
CREATE FILE FORMAT work_232 TYPE=csv;
CREATE FILE FORMAT preview_567 TYPE=JSON;
要执行的查询是:
BEGIN
DROP FILE FORMAT IF EXISTS WORK.PREVIEW_567;
DROP FILE FORMAT IF EXISTS WORK.WORK_123;
DROP FILE FORMAT IF EXISTS WORK.WORK_232;
END
第一个运行:
后续运行:
我需要在 Snowflake 中删除特定模式的多种文件格式(大约 70 种)。我浏览了文档并尝试了一些变通方法,但找不到任何自动执行的方法。
示例:
schema - work
file formats - work_123, work_234, preview_567, preview_561, match_897, match_565
这不是完全自动化的 - 但如果这是一次性任务,则编写一个存储过程来完全自动化它可能有点矫枉过正。
运行 显示文件格式
根据上一个命令的结果构造删除语句:
SELECT 'DROP FILE FORMAT '||"名称"||';' 来自 table(result_scan(last_query_id()));
复制上一步的输出并运行它到你的UI
它可以通过 Snowflake 脚本实现完全自动化:
DECLARE
SCHEMA_NAME STRING := 'WORK';
FORMAT_NAME_PATTERN STRING := '%';
QUERY STRING;
BEGIN
SELECT CONCAT('BEGIN', CHAR(10)
,LISTAGG(CONCAT('DROP FILE FORMAT IF EXISTS '
,FILE_FORMAT_SCHEMA, '.', FILE_FORMAT_NAME, ';', CHAR(10)), '')
,'END')
INTO :QUERY
FROM INFORMATION_SCHEMA.FILE_FORMATS
WHERE FILE_FORMAT_SCHEMA ILIKE :SCHEMA_NAME
AND FILE_FORMAT_NAME ILIKE :FORMAT_NAME_PATTERN ESCAPE '!'
GROUP BY GROUPING SETS(());
QUERY := COALESCE(QUERY, 'SELECT ''No file format found''');
-- Uncomment to run
-- EXECUTE IMMEDIATE :QUERY;
RETURN :QUERY;
END;
示例数据:
CREATE SCHEMA WORK;
CREATE FILE FORMAT work_123 TYPE=csv;
CREATE FILE FORMAT work_232 TYPE=csv;
CREATE FILE FORMAT preview_567 TYPE=JSON;
要执行的查询是:
BEGIN
DROP FILE FORMAT IF EXISTS WORK.PREVIEW_567;
DROP FILE FORMAT IF EXISTS WORK.WORK_123;
DROP FILE FORMAT IF EXISTS WORK.WORK_232;
END
第一个运行:
后续运行: