gpt4 book ai didi

r - 如何将 R 数据框写入 Snowflake 数据库表

转载 作者:行者123 更新时间:2023-12-04 13:13:46 25 4
gpt4 key购买 nike

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

现在,我想将在 R 中创建的数据框作为表写回 Snowflake。我使用了以下命令:dbWriteTable(conn, "database.schema.tablename", R data frame name)。使用此命令成功连接 Snowflake,但我收到以下错误消息:“new_result(connection@ptr, statement) 错误:nanodbc/nanodbc.cpp:1344:22000: 无法执行 CREATE TABLE。此 session 没有当前数据库。调用“USE DATABASE”,或使用限定名称。”

我在 dbWriteTable 函数的“database.schema.tablename”参数中使用了限定的数据库名称。我看不到如何在我的 R 函数中使用“USE DATABASE”。有任何想法吗??谢谢!!

最佳答案

DBI::dbWriteTable(…) 的 API需要将文字表名称作为字符串或作为正确引用的标识符传递:

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

conn: A DBIConnection object, as returned by dbConnect().

name: A character string specifying the unquoted DBMS table name, or the result of a call to dbQuoteIdentifier().

value: a data.frame (or coercible to data.frame).

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

您上面的代码将尝试使用与连接对象关联的数据库和模式上下文创建一个字面命名 “database.schema.tablename” 的表。 p>

例如,如果您的连接有一个数据库 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::Id 类参数类型的 name,并且converts it into a quoted identifier通过 DBI::dbQuoteIdentifier(…) 格式化(为方便起见)。

关于r - 如何将 R 数据框写入 Snowflake 数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62185369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com