我想从R。
中读取sqlite数据库中的二进制字段我成功了一个间接方法,包括首先在临时文件中导出二进制字段,通过shell命令调用sqlite3,然后使用readbin()命令读取这个二进制文件。这是详细的代码:
library(RSQLite)
fileConn<-file("script.sql")
writeLines(c('.load fileio.dll','SELECT writefile("tmp.bin",Curve) FROM Table1 WHERE Id=41;','.exit'), fileConn)
close(fileConn)
shell('sqlite3.exe database.sqlite < script.sql')
to.read<-file(description="tmp.bin","rb")
tmp<-readBin(to.read,"integer",n=10000,size=2)
plot(tmp)
close(to.read)
我想用R直接读取二进制字段,而不通过sqlite3创建临时文件。
根据建议(非常感谢!),我尝试了以下内容:
con <- dbConnect(SQLite(),dbname="database.sqlite")
tmp<-dbGetQuery(con,"SELECT quote(Curve) FROM Table1 WHERE Id=41")
tmp
改编:
quote(Curve)
1 '\023'
它看起来并不好,因为我应该得到一个870个整数元素的向量,从:
开始head(good)
[1] 19 19 0 19 19 19
我的sql语句出了什么问题?如何用R直接读取二进制字段?
非常感谢您提前
答案 0 :(得分:0)
与How to write binary data into SQLite with R DBI's dbWriteTable()?中的解决方案类似,您可以使用blob literal将blob转换为quote() function。 也就是说,执行类似
的查询SELECT quote(Curve) FROM Table1 WHERE ID = 41
,结果是
形式的字符串X'1234ABCD....'
然后,您必须将十六进制数字转换回二进制数据。