本文已经安装PostgreSQL和对应ODBC驱动,连接前请检查驱动安装和配置情况。安装和配置完成后如下图所示:
首先安装R语言ODBC连接工具包。R语言连接PostgreSQL还可以使用RPostgreSQL软件包。
install.packages("RODBC")
本机默认有数据库test。如下图所示
#查看可用数据源
odbcDataSources() #本文数据源名称"PostgreSQL35W"
#建立连接PostgreSQLConnection ,数据源PostgreSQL35W、用户名postgres、密码123456,具体情况根据实际情况修改
PostgreSQLConnection <- odbcConnect("PostgreSQL35W",uid = "postgres",pwd = "123456")
#需要执行SQL语句
result <- sqlQuery(PostgreSQLConnection,"select * from User")
#查看表
> sqlTables(PostgreSQLConnection)
TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS
1 test public User TABLE
#断开连接
odbcClose(conn)
连接过程中可能会出现报错
> PostgreSQLConnection <- odbcConnect("PostgreSQL35W",uid = "postgres",pwd = "123456")
Warning messages:
1: In RODBC::odbcDriverConnect("DSN=PostgreSQL35W;UID=postgres;PWD=123456") :
[RODBC] ERROR: state IM014, code 0, message [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
2: In RODBC::odbcDriverConnect("DSN=PostgreSQL35W;UID=postgres;PWD=123456") :
ODBC connection failed
>
检查系统ODBC版本和R语言版本,做到一一对应。例如64位R语言运行环境需要使用64位ODBC连接配置。
本文完整代码如下:
> library(RODBC)
> PostgreSQLConnection <- odbcConnect("PostgreSQL35W",uid = "postgres",pwd = "123456")
> odbcDataSources()
dBASE Files Excel Files
"Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)" "Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)"
MS Access Database Visio Database Samples
"Microsoft Access Driver (*.mdb, *.accdb)" "Microsoft Access Driver (*.mdb)"
PostgreSQL35W PostgreSQL30
"PostgreSQL Unicode(x64)" "PostgreSQL ANSI(x64)"
"SQL Server"
> SQLresult <- sqlQuery(PostgreSQLConnection,"select * from User")
> SQLresult
user
1 postgres
>
注意:切换数据库需要在ODBC中新增用户或系统DSN,使用DSN已经选中数据库,无法直接切换数据库。