首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将R中的tbl_sql保存到MySQL?

将R中的tbl_sql保存到MySQL?
EN

Stack Overflow用户
提问于 2022-06-18 02:02:20
回答 2查看 82关注 0票数 1

我只是在用R学习MySQL,我想知道这是否可能。

我使用MySQL包对存在于RMariaDB上的数据库执行了如下查询:

代码语言:javascript
复制
library(RMariaDB)

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

df <- tbl(con,"df")

然后,我使用dplyr命令对这个对象进行了一些调整。我是否可以将新的、已清理的表保存到mySQL作为新表,而无需首先将其转换为数据帧或table?根据R的说法,这是班级:

代码语言:javascript
复制
class(df)
[1] "tbl_MariaDBConnection" "tbl_dbi"               "tbl_sql"              
[4] "tbl_lazy"              "tbl"    

试图遵循保存普通数据帧的方法会给我带来各种错误,通常类似于“tbl_MariaDBConnection类对象不适用的方法”。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-22 19:11:54

可以使用compute()函数将结果写入数据库中的表。如果没有其他参数,它将写入一个临时表(会话结束时将清除该表),但您可以指定它为非临时表。compute()tbl_sql上的文档位于https://dbplyr.tidyverse.org/reference/collapse.tbl_sql.html

至于您的代码,类似于

代码语言:javascript
复制
compute(df, temporary=FALSE, name="my_table_name")

将起作用;如果您需要在架构中使用它,则应该能够使用

代码语言:javascript
复制
compute(df, temporary=FALSE, name = dbplyr::in_schema("my_schema", "my_table_name"))

这个方法很好,因为您不必自己编写SQL,因此它处理不同数据库后端之间SQL语法上的差异。

票数 2
EN

Stack Overflow用户

发布于 2022-06-19 20:48:34

我使用this答案中描述的过程。但是您也可能对this问题的答案感兴趣。

在您的上下文中,它可能看起来如下:

代码语言:javascript
复制
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))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72666187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档