如何将R数据帧写入Snowflake数据库表 [英] How to write an R Data Frame to a Snowflake database table

查看:18
本文介绍了如何将R数据帧写入Snowflake数据库表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人知道如何将R数据帧写入新的Snowflake数据库表吗?我在R中创建了一个成功的Snowflake ODBC连接,可以成功地从Snowflake查询。连接命令为:conn<;-dbi::dbConnect(odbc::odbc(),"Snowflake")。

现在,我想将在R中创建的一个数据帧作为表写回Snowflake。我使用了以下命令:dbWriteTable(conn,"database ase.schema.tablename",R data frame name)。使用此命令成功连接到Snowflake,但收到以下错误消息:"ERROR in NEW_RESULT(Connection@ptr,Statement):nanodbc/nanodbc.cpp:1344:22000:无法执行CREATE TABLE。此会话没有当前数据库。请调用‘USE DATABASE’,或使用限定名称。"

我在dbWriteTable函数的"database ase.schema.tablename"参数中使用了限定的数据库名称。我不明白如何在我的R函数中使用"use database"。有什么想法吗??谢谢!!

推荐答案

DBI::dbWriteTable(…)的接口要求将文字表名作为字符串传递,或者作为正确引用的标识符传递:

dbWriteTable(conn, name, value, ...)

conn:DBIConnection对象,dbConnect()返回。

name:指定未加引号的DBMS表名的字符串,或dbQuoteIdentifier()调用的结果。

value:data.frame(或强制data.frame)。

dbWriteTable(conn, "database.schema.tablename", R data frame name)

上面的代码将尝试使用与Connection对象关联的数据库和架构上下文创建一个名为的表"database.schema.tablename"

例如,如果您的连接设置了数据库DB和架构SCH,则将成功创建名为DB.SCH."database.schema.tablename"的表。

若要正确定义数据库、架构和表名,请使用具有正确层次结构顺序的DBI::Id类对象:

table_id <- Id(database="database", schema="schema", table="tablename")
dbWriteTable(conn, table_id, R data frame name)

在后台,DBI::dbWriteTable(…)函数通过DBI::dbQuoteIdentifier(…)识别nameconverts it into a quoted identifier格式的DBI::Id类参数类型(为方便起见)。

这篇关于如何将R数据帧写入Snowflake数据库表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆