當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R dbplyr build_sql 構建 SQL 字符串。


這是一個方便的函數,可以通過自動轉義輸入中的所有表達式來防止 sql 注入攻擊(在 dplyr 的上下文中很可能是意外而不是故意的),同時將裸字符串視為 sql。這不太可能阻止任何嚴重的攻擊,但應該使您不太可能生成無效的 sql。

用法

build_sql(..., .env = parent.frame(), con = sql_current_con())

參數

...

輸入轉換為 SQL。使用sql()按原樣保留用戶輸入(危險),並使用ident()將用戶輸入標記為sql標識符(安全)

.env

評估參數的環境。典型使用中不需要。

con

數據庫連接;用於選擇正確的引用字符。

細節

僅當生成 SELECT 子句、其他高級查詢或沒有 R 等效項的其他語法時,才應使用此函數。對於單個函數翻譯,首選 sql_expr()

例子

con <- simulate_dbi()
build_sql("SELECT * FROM TABLE", con = con)
#> <SQL> SELECT * FROM TABLE
x <- "TABLE"
build_sql("SELECT * FROM ", x, con = con)
#> <SQL> SELECT * FROM 'TABLE'
build_sql("SELECT * FROM ", ident(x), con = con)
#> <SQL> SELECT * FROM `TABLE`
build_sql("SELECT * FROM ", sql(x), con = con)
#> <SQL> SELECT * FROM TABLE

# http://xkcd.com/327/
name <- "Robert'); DROP TABLE Students;--"
build_sql("INSERT INTO Students (Name) VALUES (", name, ")", con = con)
#> <SQL> INSERT INTO Students (Name) VALUES ('Robert''); DROP TABLE Students;--')
源代碼:R/build-sql.R

相關用法


注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Build a SQL string.。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。