0

目标:能够对 R 中的数据框进行 SQL 查询。

使用的方法:使用 dbWriteTable 将表写入数据库,然后我可以使用 SQL 查询并加入数据库中存在的其他表。

问题:似乎执行成功,但表中似乎并不实际存在于数据库中。尝试查询表时抛出的错误。详情如下:

数据框名称: testing_df = 1 列数据框

channel <- DBI::dbConnect(odbc::odbc(), "data_source_name", uid="user_name", pwd='password')
dbGetQuery(channel,"use role role_name;")
dbGetQuery(channel,"use warehouse warehouse_name;")
dbGetQuery(channel,"use schema schema_name;") 
dbGetQuery(channel,"use database db_name;") 

table_name = Id(database="database_name",schema="schema_name",table="table_testing")

dbWriteTable(conn = channel,
             name = table_name,
             value = testing_df,
             overwrite=TRUE)

dbReadTable(channel,name=table_name)

dbExistsTable(channel,name=table_name)

dbReadTable 提供预期的数据帧输出。

dbExistsTable 提供以下输出:

> dbExistsTable(channel,name=table_name)
[1] TRUE

问题:该表无法位于实际的数据库 UI 中,并且在 R 中运行以下命令时:

desired_output <- dbGetQuery(channel,sprintf("select * from database_name.schema_name.table_testing;"))

desired_output

我收到以下错误:

SQL compilation error: Object 'table_testing' does not exist or not authorized.

我能够检查数据库并看到该表实际上不存在。

问题:有谁知道 dbWriteTable 是否真的应该将表写入数据库,或者我是否误解了 dbWriteTable 的目的?有更好的方法来完成这项任务吗?

4

0 回答 0