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