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
上的信息
我正在使用 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
语句在数据库中创建第二个 tabletbl1
- 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