【问题标题】:Error in rsqlite_send_queryrsqlite_send_query 中的错误
【发布时间】:2017-04-03 23:56:02
【问题描述】:

我有下面的表名 lco_act_data

head(lco_act_data)

X   SMZ_N     ACRES HH2030 ENR2030 RE2030 OFF2030 OTH2030 TOT2030
1       1 1603.5114  11325    1706    407    1368    1162    3085
2       2  907.2274   2079    1062    332    1028    1190    2654
3       3  758.8701   1407    1447     60    1949    1315    3829
4       4  170.1726    868       0     76     737     128     964
5       5  820.4855   5338     304    198    1343    1597    3249
6       6 1596.5201   4584    3272    346    1351    1411    3195

当我尝试使用下面的 sqldf 函数更改表时,会抛出以下错误,我似乎无法理解为什么。

lco_act_data_edited <- sqldf("ALTER TABLE lco_act_data 
ADD Jurisdiction varchar(20),
State varchar(20),
Region varchar(20),
Subregion varchar(20)")

rsqlite_send_query(conn@ptr, statement) 中的错误:“,”附近:语法错误

【问题讨论】:

  • 所以你使用的是sqlite?请务必查看该 DB 的 alter table 语法:stackoverflow.com/questions/6172815/…。您的陈述无效。
  • 是的,我正在使用 SQLite。当我尝试一次只添加一个列时,如下所示 lco_act_data_edited
  • 我认为 alter 语句不会返回任何内容。它会改变lco_act_data吗?
  • 不,它根本不会改变 lco_act_data

标签: sql r sqldf


【解决方案1】:

默认情况下,sqldf 函数运行时没有副作用,它不会更改现有对象。如果要更改表,则需要在同一命令中返回它。您可以传入一个 SQL 语句向量。例如

lco_act_data_edited  <- sqldf(c(
    "ALTER TABLE lco_act_data ADD Jurisdiction varchar(20)", 
    "ALTER TABLE lco_act_data ADD State varchar(20)", 
    "select * from lco_act_data"
))

sqldf FAQ #8相关

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多