这是 dplyr copy_to()
泛型的实现,它主要是 DBI::dbWriteTable()
的包装器。
它对于将少量数据复制到数据库以进行示例、实验和联接非常有用。默认情况下,它创建仅在当前数据库连接中可见的临时表。
用法
# S3 method for src_sql
copy_to(
dest,
df,
name = deparse(substitute(df)),
overwrite = FALSE,
types = NULL,
temporary = TRUE,
unique_indexes = NULL,
indexes = NULL,
analyze = TRUE,
...,
in_transaction = TRUE
)
参数
- dest
-
远程数据源
- df
-
本地数据帧、来自同一源的
tbl_sql
或来自另一个源的tbl_sql
。如果来自另一个源,所有数据都必须通过 R 一次性传输,因此它只适合传输少量数据。 - name
-
新远程表的名称。
- overwrite
-
如果
TRUE
,将覆盖名称为name
的现有表。如果FALSE
,如果name
已经存在,将会抛出错误。 - types
-
给出用于列的变量类型的字符向量。有关可用类型,请参阅https://www.sqlite.org/datatype3.html。
- temporary
-
如果是
TRUE
,将创建一个该连接本地的临时表,并在连接过期时自动删除 - unique_indexes
-
字符向量列表。列表中的每个元素都会在指定列上创建一个新的唯一索引。重复的行将导致失败。
- indexes
-
字符向量列表。列表中的每个元素都会创建一个新索引。
- analyze
-
如果
TRUE
(默认值),将自动分析新表,以便查询优化器获得有用的信息。 - ...
-
传递给方法的其他参数。
- in_transaction
-
表的创建是否应该包含在事务中?这通常会使事情变得更快,但如果数据库不支持事务,或者您正在将事务包装在更高的位置(并且您的数据库不支持嵌套事务),您可能希望抑制。
值
另一个tbl_lazy
。使用show_query()
查看生成的查询,并使用collect()
执行查询并将数据返回到R。
也可以看看
copy_inline()
在 SQL 查询中使用小数据,而不实际写入表。
例子
library(dplyr, warn.conflicts = FALSE)
df <- data.frame(x = 1:5, y = letters[5:1])
db <- copy_to(src_memdb(), df)
db
#> # Source: table<df> [5 x 2]
#> # Database: sqlite 3.41.2 [:memory:]
#> x y
#> <int> <chr>
#> 1 1 e
#> 2 2 d
#> 3 3 c
#> 4 4 b
#> 5 5 a
df2 <- data.frame(y = c("a", "d"), fruit = c("apple", "date"))
# copy_to() is called automatically if you set copy = TRUE
# in the join functions
db %>% left_join(df2, copy = TRUE)
#> Joining with `by = join_by(y)`
#> # Source: SQL [5 x 3]
#> # Database: sqlite 3.41.2 [:memory:]
#> x y fruit
#> <int> <chr> <chr>
#> 1 1 e NA
#> 2 2 d date
#> 3 3 c NA
#> 4 4 b NA
#> 5 5 a apple
相关用法
- R dbplyr copy_inline 在 dbplyr 查询中使用本地 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等大神的英文原创作品 Copy a local data frame to a remote database。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。