这是 copy_to()
的替代方案,不需要写访问,并且对于小数据来说速度更快。
参数
- con
-
数据库连接。
- df
-
本地 DataFrame 。数据直接写入 SQL 查询中,因此数据应该很小。
- types
-
用于列的 SQL 数据类型的命名字符向量。数据类型是后端特定的。例如,对于 Postgres,这可能是
c(id = "bigint", created_at = "timestamp", values = "integer[]")
。如果是NULL
(默认值),则类型由df
确定。
也可以看看
copy_to()
将数据复制到新的数据库表中。
例子
df <- data.frame(x = 1:3, y = c("a", "b", "c"))
con <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
copy_inline(con, df)
#> # Source: SQL [3 x 2]
#> # Database: sqlite 3.41.2 [:memory:]
#> x y
#> <int> <chr>
#> 1 1 a
#> 2 2 b
#> 3 3 c
copy_inline(con, df) %>% dplyr::show_query()
#> <SQL>
#> SELECT CAST(`x` AS INTEGER) AS `x`, CAST(`y` AS TEXT) AS `y`
#> FROM (
#> SELECT NULL AS `x`, NULL AS `y`
#> WHERE (0 = 1)
#> UNION ALL
#> VALUES (1, 'a'), (2, 'b'), (3, 'c')
#> ) AS `values_table`
相关用法
- R dbplyr copy_to.src_sql 将本地 DataFrame 复制到远程数据库
- R dbplyr collapse.tbl_sql 计算查询的结果
- R dbplyr count.tbl_lazy 按组计数观察值
- R dbplyr complete.tbl_lazy 完成缺少数据组合的 SQL 表
- 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 sql_expr 从 R 表达式生成 SQL
- R dbplyr get_returned_rows 提取并检查返回的行
- R dbplyr dbplyr_uncount “计数”数据库表
- R dbplyr backend-odbc 后端:ODBC
- R dbplyr head.tbl_lazy 对第一行进行子集化
- R dbplyr db-quote SQL 转义/引用泛型
- 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 按一个或多个变量分组
- R dbplyr tbl_lazy 创建本地惰性 tibble
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Use a local data frame in a dbplyr query。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。