大佬教程收集整理的这篇文章主要介绍了括号转义表名称与dplyr,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用方括号来摆脱可怕的表名,但这似乎不起作用。例如:
data(iris) foo.db <- src_sqlite("foo.sqlite3",create = TRUE) copy_to(foo.db,df=iris,name="[14m3-n4m3]")
sqliteSendquery(conn,statement,bind.data)中的错误:语句中的错误:没有这样的表:14m3-n4m3
如果我选择一个明智的名字,这个工作。然而,由于各种原因,我真的很想保留繁琐的名字。我也可以直接从sqlite创建一个这么命名的表:
sqlite> create table [14m3-n4m3](foo,bar,baz); sqlite> .tables 14m3-n4m3
没有破裂的东西太深了,这看起来像dplyr正在处理方括号,我无法弄清楚。我怀疑这是一个BUG,但是我想先检查一下,以确保我没有丢失任何东西。
编辑:我忘了提到我只是直接把janky的名字传给dplyr的情况。这个错误出来如下:
library(dplyr) data(iris) foo.db <- src_sqlite("foo.sqlite3",name="14M3-N4M3") Error in sqliteSendquery(conn,statement,bind.data) : error in statement: unrecognized token: "14M3"
第二个问题出现在表更新时。获取字段名称的代码,这次实际上在dplyr中,再次无法转义表名,因为它使用paste0而不是build_sql。
我已经在a fork of dplyr修复了这两个错误。我还向@hadley提出了一个请求,并在https://github.com/hadley/dplyr/issues/926发布了一个注释。同时,如果你想使用devtools :: install_github(“NikNakk / dplyr “,ref =”sqlite-escape“),然后恢复到主版本一旦它被修复。
顺便提一下,sql中使用SQL-99方法来转义表名(和其他标识符)是双引号(见SQL standard to escape column names?)。 MS Access使用方括号,而mysql默认为反引号。 dplyr按照标准使用双引号。
最后,@RichardScriven的建议不会普遍运作。例如,SELEct在R中是完全有效的名称,但在sql中不是语法上有效的表名。其他保留字也同样如此。
以上是大佬教程为你收集整理的括号转义表名称与dplyr全部内容,希望文章能够帮你解决括号转义表名称与dplyr所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。