目标:能够对 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 的目的?有更好的方法来完成这项任务吗?