这些函数生成 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。