本文介绍了如何将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, "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(…)
识别name
和converts it into a quoted identifier格式的DBI::Id
类参数类型(为方便起见)。
这篇关于如何将R数据帧写入Snowflake数据库表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!