當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。