簡體   English   中英

將 R 中的 tbl_sql 保存到 MySQL?

[英]Save a tbl_sql in R to MySQL?

我只是在用 R 學習 MySQL,我想知道這是否可能。

我使用 RMariaDB 包對 MySQL 上存在的數據庫執行了查詢,如下所示:

library(RMariaDB)

con <- DBI::dbConnect(RMariaDB::MariaDB(),
                      dbname = "",
                      host = "",
                      user = "",
                      password = "") #details omitted 

df <- tbl(con,"df")

然后我使用 dplyr 命令對這個對象進行了一些調整。 我可以在不首先將其轉換為數據框或小標題的情況下將新的、已清理的表作為新表保存到 mySQL 嗎? 它的類,根據 R 是:


class(df)
[1] "tbl_MariaDBConnection" "tbl_dbi"               "tbl_sql"              
[4] "tbl_lazy"              "tbl"    

嘗試遵循保存普通數據幀的方法會給我帶來各種錯誤,通常是“沒有適用於類 tbl_MariaDBConnection 的對象的方法”

謝謝你。

您可以使用compute()函數將結果寫入數據庫中的表。 如果沒有其他參數,它將寫入臨時表(會話結束時將被清除),但您可以指定使其成為非臨時表。 tbl_sql上的compute()文檔位於https://dbplyr.tidyverse.org/reference/collapse.tbl_sql.html

至於你的代碼,比如

compute(df, temporary=FALSE, name="my_table_name")

將工作; 如果您在模式中需要它,您應該能夠指定

compute(df, temporary=FALSE, name = dbplyr::in_schema("my_schema", "my_table_name"))

這種方法很好,因為您不必自己編寫 SQL,因此它可以處理不同數據庫后端之間 SQL 語法的差異。

我使用答案中描述的過程。 但您可能也對這個問題的答案感興趣。

在您的上下文中,它可能看起來像:

sql_query <- glue::glue(
    "SELECT *\n",
    "INTO {db}.{schema}.{tbl_name}\n",
    "FROM (\n",
    dbplyr::sql_render(df),
    "\n) AS sub_query"
  )

dbExecute(tbl_connection, as.character(sql_query))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM