這些函數生成 rows_*(in_place = TRUE)
中使用的 SQL。
用法
sql_query_insert(
con,
x_name,
y,
by,
...,
conflict = c("error", "ignore"),
returning_cols = NULL,
method = NULL
)
sql_query_append(con, x_name, y, ..., returning_cols = NULL)
sql_query_update_from(
con,
x_name,
y,
by,
update_values,
...,
returning_cols = NULL
)
sql_query_upsert(
con,
x_name,
y,
by,
update_cols,
...,
returning_cols = NULL,
method = NULL
)
sql_query_delete(con, x_name, y, by, ..., returning_cols = NULL)
參數
- con
-
數據庫連接。
- x_name
-
要更新的表的名稱。
- y
-
一個懶惰的表格。
- by
-
給出關鍵列的未命名字符向量。鍵列必須同時存在於
x
和y
中。鍵通常唯一標識每一行,但這僅在使用rows_update()
、rows_patch()
或rows_upsert()
時對y
的鍵值強製執行。默認情況下,我們使用
y
中的第一列,因為第一列是放置標識符變量的合理位置。 - ...
-
傳遞給方法的其他參數。
- conflict
-
對於
rows_insert()
,y
中的鍵與x
中的鍵衝突應該如何處理?如果y
中的鍵已存在於x
中,則會發生衝突。之一:
-
"error"
(默認值)如果y
中的任何鍵與x
中的鍵衝突,將會出錯。 -
"ignore"
將忽略y
中與x
中的鍵衝突的行。
-
- returning_cols
-
可選的。要返回的列的名稱。
- method
-
可選的。使用的方法。
- update_values
-
指定如何更新列的命名 SQL 向量。
- update_cols
-
要更新的列的名稱。
細節
插入方法
"where_not_exists"
大多數數據庫的默認值。
INSERT INTO x_name
SELECT *
FROM y
WHERE NOT EXISTS <match on by columns>
更新插入方法
例子
lf <- lazy_frame(
carrier = c("9E", "AA"),
name = c("Endeavor Air Inc.", "American Airlines Inc."),
con = simulate_postgres()
)
sql_query_upsert(
simulate_postgres(),
ident("airlines"),
lf,
by = "carrier",
update_cols = "name"
)
#> <SQL> INSERT INTO `airlines` (`carrier`, `name`)
#> SELECT *
#> FROM `df` AS `...y`
#> WHERE true
#> ON CONFLICT (`carrier`)
#> DO UPDATE
#> SET `name` = `excluded`.`name`
相關用法
- R dbplyr sql_expr 從 R 表達式生成 SQL
- R dbplyr select.tbl_lazy 使用名稱對列進行子集化、重命名和重新排序
- R dbplyr summarise.tbl_lazy 將每組匯總為一行
- R dbplyr backend-teradata 後端:Teradata
- R dbplyr escape 轉義/引用字符串。
- R dbplyr expand.tbl_lazy 擴展 SQL 表以包含所有可能的值組合
- R dbplyr distinct.tbl_lazy 子集不同/唯一行
- R dbplyr backend-sqlite 後端:SQLite
- R dbplyr pivot_wider.tbl_lazy 將數據從長軸轉向寬軸
- R dbplyr build_sql 構建 SQL 字符串。
- R dbplyr mutate.tbl_lazy 創建、修改和刪除列
- R dbplyr collapse.tbl_sql 計算查詢的結果
- R dbplyr get_returned_rows 提取並檢查返回的行
- R dbplyr dbplyr_uncount “計數”數據庫表
- R dbplyr count.tbl_lazy 按組計數觀察值
- R dbplyr backend-odbc 後端:ODBC
- R dbplyr head.tbl_lazy 對第一行進行子集化
- R dbplyr db-quote SQL 轉義/引用泛型
- R dbplyr copy_inline 在 dbplyr 查詢中使用本地 DataFrame
- R dbplyr backend-oracle 後端:甲骨文
- R dbplyr backend-snowflake 後端:雪花
- R dbplyr lahman 緩存並檢索 Lahman 棒球數據庫的 src_sqlite。
- R dbplyr backend-redshift 後端:紅移
- R dbplyr partial_eval 部分評估表達式。
- R dbplyr group_by.tbl_lazy 按一個或多個變量分組
注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Generate SQL for Insert, Update, Upsert, and Delete。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。