3

我正在使用 RPostgreSQL 包将数据库连接到 R。我想用数据库中不存在的那些表来更新数据库。是否可以在 postgresql 中从 R 创建新表并使用即将到来的值更新它?有什么建议吗?

Sample of data:


       Date&Time               temp
1 2007-09-30 00:00:00 -0.1153333
2 2007-09-30 01:00:00 -0.4006667
3 2007-09-30 02:00:00 -0.4493333
4 2007-09-30 03:00:00 -0.7540000
5 2007-09-30 04:00:00 -0.5783333
6 2007-09-30 05:00:00 -0.3280000
4

3 回答 3

3

我们在包中添加了一些自动转换类型的测试,请参见源代码压缩包。特别是,将 SQL Datetime 转换为 POSIXct 是我启动该包(作为 GSoC 项目)的主要动机。

但我们可能根本不会像你在这里写的那样回信。因此,如果它抱怨缺少 POSIXct 转换器,请尝试将 POSIXct 列转换为数字,然后在 rpostgresql 邮件列表中提供可重现的示例(请参阅 code.google.com 存储库和 wiki)。

于 2013-01-07T21:13:11.183 回答
0

要创建表,您需要该dbSendUpdate()函数。

require(rjdbc)
...
dbSendUpdate(conn, "CREATE abc (...)")
于 2014-11-26T10:10:22.727 回答
0

这是一个对我有用的替代解决方案。我使用了 RPostgreSQL 和 sqldf 包。

library(RPostgreSQL)
library(sqldf) 

pw <- "password"   

options(sqldf.RPostgreSQL.user = "postgres",
     sqldf.RPostgreSQL.password = pw,
     sqldf.RPostgreSQL.dbname = "some database",
     sqldf.RPostgreSQL.host = "localhost",
     sqldf.RPostgreSQL.port = 5432)

rm(pw) # removes the password

sqldf("CREATE TABLE table_name(
   user_id serial PRIMARY KEY,
   username VARCHAR(50) UNIQUE NOT NULL,
   password VARCHAR(50) NOT NULL,
   email VARCHAR(355) UNIQUE NOT NULL,
   created_on TIMESTAMP NOT NULL,
   last_login TIMESTAMP)")
于 2017-11-30T00:49:46.670 回答