Executing PSQL in R on Windows
我一直在尝试从RStudio中的R中的system()执行PSQL。我在PATH中设置了PSQL,可以从cmd行执行PSQL。我不能为我的生活找出从Windows内的R内执行psql的正确方法。我有一个从ubuntu环境提供的代码。我之前没有使用过system(),并且针对这个特定问题的研究没有成功。
在R中执行系统后,最难的部分是没有接收到任何输出。我已经尝试了一些不同的设置来查看系统。没有运气。
此代码应执行简单的sql语句并将输出传递给本地文件。最终,在应用程序中包含动态元素会更加强大。只是让基础工作似乎是最困难的部分。
1 | system(paste("export PGPASSWORD=db_password;psql -h db_host -d db_name -c 'copy(select * from large_table limit 1000) to stdout csv' > C:/temp_data/db_test.dat", sep="")) |
我很好奇是否有人在R中使用PSQL工作的Windows环境。我的greenplum服务器不是本地的。
我的echo%PATH%包括C: Program Files(x86) pgAdmin III 1.12
包含在系统和用户变量中。
您的命令存在一些问题。
-
system 不能与重定向一起使用,必须使用shell - 您不能在Windows中使用单引号引用命令,必须使用双引号。
-
要连接命令,可以使用
& 运算符,而不是Unix中的; 运算符。
所以你的命令看起来像(似乎有必要将它包含在一行中):
1 2 | cmd<-'set PGPASSWORD=db_password& psql -h db_host -d db_name -c"copy(select * from large_table limit 1000) TO STDOUT CSV;"> C:/temp_data/db_test.dat' shell(cmd) |
但是,您是否考虑过使用
1 2 3 4 5 6 7 8 9 | # LOAD up the driver library(RPGsql) drv <- dbDriver("PostgreSQL") # CREATE a connection con <- dbConnect(drv, dbname="db_name", host='db_host',password='db_password',USER='db_user') # Query the DATABASE db_test=dbGetQuery(con, 'select * from large_table limit 1000') # WRITE your file WRITE.csv(db_test,'C:/temp_data/db_test.dat') |