Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(collapse = TRUE, comment = "#>")
## ----setup--------------------------------------------------------------------
library(polyglotSQL)
## -----------------------------------------------------------------------------
# MySQL constructs -> PostgreSQL
sql_transpile(
"SELECT IFNULL(a, b), DATE_FORMAT(d, '%Y-%m-%d') FROM t LIMIT 5",
from = "mysql", to = "postgres"
)
# T-SQL pagination and date functions -> PostgreSQL
sql_transpile(
"SELECT TOP 10 name, GETDATE() AS now FROM users ORDER BY name",
from = "tsql", to = "postgres"
)
# BigQuery -> Snowflake: quoting and safe casts
sql_transpile(
"SELECT `user id`, SAFE_CAST(x AS INT64) FROM `proj.dataset.tbl`",
from = "bigquery", to = "snowflake"
)
## -----------------------------------------------------------------------------
queries <- c(
orders = "SELECT IFNULL(status, 'unknown') AS status FROM orders",
daily = "SELECT DATE(created_at) AS d, COUNT(*) FROM events GROUP BY DATE(created_at)",
users = "SELECT id, CONCAT(first, ' ', last) AS full_name FROM users"
)
vapply(queries, sql_transpile, character(1),
from = "mysql", to = "duckdb")
## -----------------------------------------------------------------------------
migrate <- function(sql, from, to) {
tryCatch(
list(ok = TRUE, sql = sql_transpile(sql, from = from, to = to)),
polyglot_error = function(e) list(ok = FALSE, error = conditionMessage(e))
)
}
migrate("SELECT IFNULL(a, b) FROM t", "mysql", "postgres")
## -----------------------------------------------------------------------------
sql_diff(
"SELECT a FROM t",
"SELECT a, b FROM t WHERE a > 1"
)
## -----------------------------------------------------------------------------
out <- sql_transpile("SELECT IFNULL(a, b) FROM t", from = "mysql", to = "postgres")
sql_validate(out, dialect = "postgres")$valid
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.