Chu*_*uck 4 r snowflake-cloud-data-platform
有谁知道如何将 R 数据框写入新的 Snowflake 数据库表?我在 R 中成功创建了 Snowflake ODBC 连接,并且可以成功从 Snowflake 进行查询。连接命令为:conn <- DBI::dbConnect(odbc::odbc(), "Snowflake")。
现在,我想将在 R 中创建的数据框作为表写回 Snowflake。我使用了以下命令:dbWriteTable(conn,“ database.schema.tablename ”,R数据框名称)。使用此命令成功连接 Snowflake,但收到以下错误消息:“new_result(connection@ptr, statements) 中的错误:nanodbc/nanodbc.cpp:1344: 22000: 无法执行 CREATE TABLE。此会话没有当前的表”数据库。调用“USE DATABASE”,或使用限定名称。”
我在 dbWriteTable 函数的“ database.schema.tablename ”参数中使用限定的数据库名称。我不知道如何在 R 函数中使用“USE DATABASE”。有任何想法吗??谢谢你!!
小智 7
API 要求DBI::dbWriteTable(\xe2\x80\xa6)将文字表名称作为字符串或作为正确引用的标识符传递:
\n\n\n
dbWriteTable(conn, name, value, ...)\n
conn:一个 DBIConnection 对象,由 dbConnect() 返回。\n
name:指定不带引号的 DBMS 表名的字符串,或调用 dbQuoteIdentifier() 的结果。\n
value:一个data.frame(或可强制转换为data.frame)。
dbWriteTable(conn, "database.schema.tablename", R data frame name)\nRun Code Online (Sandbox Code Playgroud)\n上面的代码将尝试使用与连接对象关联的数据库和架构上下文创建一个字面名为 的表。 "database.schema.tablename"
例如,如果您的连接有一个数据库DB和架构SCH集,则这将成功创建一个名为 的表DB.SCH."database.schema.tablename"。
要正确定义数据库、模式和表名称,请使用DBI::Id具有正确层次结构顺序的类对象:
table_id <- Id(database="database", schema="schema", table="tablename")\ndbWriteTable(conn, table_id, R data frame name)\nRun Code Online (Sandbox Code Playgroud)\n在幕后,该DBI::dbWriteTable(\xe2\x80\xa6)函数识别 的DBI::Id类参数类型name,并将其转换为带引号的标识符格式 via DBI::dbQuoteIdentifier(\xe2\x80\xa6)(为方便起见)。