当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R dbplyr copy_to.src_sql 将本地 DataFrame 复制到远程数据库


这是 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/verb-copy-to.R

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Copy a local data frame to a remote database。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。