How do I (programmatically) get a list of Snowflake's reserved words?

Viewed 473

Snowflake maintains a list of reserved words within their documentation; however, I need a way to cleanly (I.E. without scraping it) and programmatically check against this list. I'd assume they make this queryable somewhere, but I can't find any information on it.

Update: Opened this on Snowflake Ideas (can't seem to link post - just search "Expose Reserved Words in a Queryable Table")

2 Answers

Probably the best way is to simply pull that HTML table from the snowflake documentation and create your own list. Excel is one method. You can "Insert data from Web", then use TEXTJOIN() on the range to create a list of the keywords. This gets me this list that you can use in a regex

((ACCOUNT)|(ALL)|(ALTER)|(AND)|(ANY)|(AS)|(BETWEEN)|(BY)|(CASE)|(CAST)|(CHECK)|(COLUMN)|(CONNECT)|(CONNECTION)|(CONSTRAINT)|(CREATE)|(CROSS)|(CURRENT)|(CURRENT_DATE)|(CURRENT_TIME)|(CURRENT_TIMESTAMP)|(CURRENT_USER)|(DATABASE)|(DELETE)|(DISTINCT)|(DROP)|(ELSE)|(EXISTS)|(FALSE)|(FOLLOWING)|(FOR)|(FROM)|(FULL)|(GRANT)|(GROUP)|(GSCLUSTER)|(HAVING)|(ILIKE)|(IN)|(INCREMENT)|(INNER)|(INSERT)|(INTERSECT)|(INTO)|(IS)|(ISSUE)|(JOIN)|(LATERAL)|(LEFT)|(LIKE)|(LOCALTIME)|(LOCALTIMESTAMP)|(MINUS)|(NATURAL)|(NOT)|(NULL)|(OF)|(ON)|(OR)|(ORDER)|(ORGANIZATION)|(QUALIFY)|(REGEXP)|(REVOKE)|(RIGHT)|(RLIKE)|(ROW)|(ROWS)|(SAMPLE)|(SCHEMA)|(SELECT)|(SET)|(SOME)|(START)|(TABLE)|(TABLESAMPLE)|(THEN)|(TO)|(TRIGGER)|(TRUE)|(TRY_CAST)|(UNION)|(UNIQUE)|(UPDATE)|(USING)|(VALUES)|(VIEW)|(WHEN)|(WHENEVER)|(WHERE)|(WITH))

or in SQL

SELECT * FROM (VALUES 
     ('ACCOUNT')
    ,('ALL')
    ,('AND')
    ,('ANY')
    ,('AS')
    ,('BETWEEN')
    ,('BY')
    ,('CASE')
    ,('CAST')
    ,('CHECK')
    ,('COLUMN')
    ,('CONNECT')
    ,('CONNECTION')
    ,('CROSS')
    ,('DATABASE')
    ,('DELETE')
    ,('DISTINCT')
    ,('ELSE')
    ,('EXISTS')
    ,('FALSE')
    ,('FOLLOWING')
    ,('FOR')
    ,('FROM')
    ,('FULL')
    ,('GRANT')
    ,('GROUP')
    ,('GSCLUSTER')
    ,('HAVING')
    ,('ILIKE')
    ,('IN')
    ,('INCREMENT')
    ,('INNER')
    ,('INSERT')
    ,('INTERSECT')
    ,('INTO')
    ,('IS')
    ,('ISSUE')
    ,('JOIN')
    ,('LATERAL')
    ,('LEFT')
    ,('LIKE')
    ,('LOCALTIME')
    ,('LOCALTIMESTAMP')
    ,('MINUS')
    ,('NATURAL')
    ,('OF')
    ,('ON')
    ,('OR')
    ,('ORDER')
    ,('ORGANIZATION')
    ,('QUALIFY')
    ,('REGEXP')
    ,('REVOKE')
    ,('RIGHT')
    ,('RLIKE')
    ,('ROW')
    ,('ROWS')
    ,('SAMPLE')
    ,('SELECT')
    ,('SET')
    ,('SOME')
    ,('START')
    ,('TABLESAMPLE')
    ,('THEN')
    ,('TO')
    ,('TRIGGER')
    ,('TRUE')
    ,('TRY_CAST')
    ,('UNION')
    ,('UNIQUE')
    ,('UPDATE')
    ,('USING')
    ,('VALUES')
    ,('VIEW')
    ,('WHEN')
    ,('WHENEVER')
    ,('WHERE')
    ,('WITH')
) AS SNOWFLAKE_RESERVED_WORDS(SNOWFLAKE_RESERVED_WORD)
Related