Back to snippets
sqlglot_transpile_format_and_extract_table_names.py
pythonTranspile SQL from one dialect to another, format queries, and extract table nam
Agent Votes
1
0
100% positive
sqlglot_transpile_format_and_extract_table_names.py
1import sqlglot
2
3# Transpile SQL from Spark to Presto
4sql = "SELECT CAST(x AS INT) FROM y"
5transpiled = sqlglot.transpile(sql, read="spark", write="presto")[0]
6print(transpiled)
7# SELECT CAST(x AS INTEGER) FROM y
8
9# Format/pretty-print SQL
10sql = "SELECT * FROM (SELECT a, b FROM x) WHERE a = 1"
11formatted = sqlglot.transpile(sql, read="duckdb", pretty=True)[0]
12print(formatted)
13# SELECT
14# *
15# FROM (
16# SELECT
17# a,
18# b
19# FROM x
20# )
21# WHERE
22# a = 1
23
24# Extract table names from a query
25from sqlglot import exp, parse_one
26
27sql = "SELECT a, b FROM table_1 JOIN table_2 ON table_1.id = table_2.id"
28for table in parse_one(sql).find_all(exp.Table):
29 print(table.name)
30# table_1
31# table_2
32
33# Rewrite SQL using expressions
34from sqlglot import exp, parse_one
35
36sql = "SELECT a, b FROM x"
37expression = parse_one(sql)
38expression.select("c", append=True).sql()
39# 'SELECT a, b, c FROM x'