sqldf R 错误创建 table

sqldf R Error create a table

我正在使用 sqldf 包对 R 中的 SQL 进行一些实验。 我正在尝试测试一些命令来检查输出,特别是我正在尝试创建 tables.

这里是代码:

sqldf("CREATE TABLE tbl1 AS
       SELECT cut
       FROM diamonds")

非常简单的代码,但是我得到了这个错误

sqldf("CREATE TABLE tbl1 AS
+ SELECT cut
+       FROM diamonds")
data frame with 0 columns and 0 rows
Warning message:
In result_fetch(res@ptr, n = n) :
Don't need to call dbFetch() for statements, only for queries

为什么说 table 创建为 0 列和 0 行? 有人可以帮忙吗?

这是警告,不是错误。该警告是由最新版本的 RSQLite 中的向后不兼容引起的。你可以忽略它,因为它仍然有效。

问题中显示的 sqldf 语句

  • 创建一个空数据库
  • diamonds 数据框上传到该数据库中同名的 table
  • 运行s create 语句在数据库中创建第二个 table tbl1
  • return 什么都没有(实际上是一个 0 列 0 行的数据框),因为 create 语句没有值
  • 销毁数据库

使用 sqldf 时,您不需要 create 语句。它会自动在后端数据库中为您的 sql 语句中引用的任何数据框创建一个 table,因此以下 sqldf 语句

sqldf("select * from diamonds")

  • 创建一个空数据库
  • 上传diamonds到它
  • 运行 select 语句
  • return select 语句的结果作为数据框
  • 销毁数据库

您可以使用 verbose=TRUE 参数查看对较低级别 RSQLite(或其他后端数据库,如果您指定不同的后端)的单独调用:

sqldf("select * from diamonds limit 3", verbose = TRUE)

给予:

sqldf: library(RSQLite)
sqldf: m <- dbDriver("SQLite")
sqldf: connection <- dbConnect(m, dbname = ":memory:")
sqldf: initExtension(connection)
sqldf: dbWriteTable(connection, 'diamonds', diamonds, row.names = FALSE)
sqldf: dbGetQuery(connection, 'select * from diamonds limit 3')
sqldf: dbDisconnect(connection)
  carat     cut color clarity depth table price    x    y    z
1  0.23   Ideal     E     SI2  61.5    55   326 3.95 3.98 2.43
2  0.21 Premium     E     SI1  59.8    61   326 3.89 3.84 2.31
3  0.23    Good     E     VS1  56.9    65   327 4.05 4.07 2.31

建议您仔细阅读 help("sqldf") 以及 sqldf github home page

上的信息