![](/img/trans.png)
[英]How to write binary data into SQLite with R DBI's dbWriteTable()?
[英]R postgresql - dbWriteTable is not commiting data properly
发现了一种奇怪的行为。 我试图将多个行添加到具有R的现有postgresql表中。新行将添加到该表中。
dbWriteTable(con,name = "public.MyTab",value = data,row.names=F,overwrite=F, append=T)
它返回TRUE
且没有错误,因此我认为复制已经完成。 但是,当我在打开的终端( psql
)中执行以下命令时:
SELECT count(*) from MyTab;
它返回:
count
-------
0
然后当我回到R并进行测试
dbReadTable(con, "public.MyTab")
它正确显示数据。
所以发生了什么事? 数据在Postgres数据库中是否正确? 如果我手动插入行( INSERT INTO ...
),则立即Count测试将按预期工作。
我有一个类似的问题-问题是postgres不处理表名和列名中的大写字母,但是可以使用DBI::dbWriteTable()
用大写字母创建表。 实际上,在我的一个生产数据库中,有一个表在psql中显示为\\dt
,但是我无法使用CLI中的drop table语句将其删除(也许我应该尝试在R中摆脱它)! 这是一个线程,对此进行了简短的讨论。
解决方案:坚持使用小写字母加下划线而不是驼峰式的字母,这样就可以了。
尝试name=c("public", "MyTab")
。 还要注意表名称的大小写(如有必要,请加引号)。 下面的更多代码:
df <- data.frame(name=c("Alice", "Bob"), score=c(95L, 90L))
library(RPostgreSQL)
con <- dbConnect(PostgreSQL())
# Write table using c(schema, table)
dbWriteTable(con, name = c("public", "MyTab"), value = df,
row.names=FALSE, overwrite=TRUE)
# Works
dbGetQuery(con, "SELECT * FROM \"MyTab\"")
# Doesn't work
dbGetQuery(con, "SELECT * FROM MyTab")
dbDisconnect(con)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.