将Excel导入PostgreSQL之PL/R版本

PostgreSQL官方支持PL/pgSQL,PL/Tcl,PL/Perl和PL/Python这几种过程语言。同时还支持一些第三方提供的过程语言,如PL/Java,PL/PHP,PL/Py,PL/R,PL/Ruby,PL/Scheme,PL/sh, PL/V8。

前文介绍了,R下实现读取Excel,并导入PostgreSQL,于是尝试把它封装成存储过程,失败。

网上遍寻答案,无果,后来偶然发现,R下还有另外一个PostgreSQL的读写包rpg,测试成功。

create or replace function xls2db(text,text, text) returns void as 
$$
library(readxl, quietly=TRUE)
xls <- read_excel(arg1,col_names = TRUE, sheet=arg2)
df =data.frame(xls)

library(rpg)
connect(dbname="steven", host="127.0.0.1", user="postgres")
write_table(data.frame(df), arg3)
disconnect()
$$ 
language 'plr';

#usage:select * from xls2db('amap_cities.xlsx', 'amap_cities','amap_cities');
Raw