Home

没有SAS,如何解析读取SAS7BDAT?

ReadStat(c) haven(R, bases on ReadStat),最新版读取5G的sas7bdat成功 sas7bdat(R),读取5G的sas7bdat失败 sas7bdat.parso(R, 基于 parso), 未测试 spark-sas7bdat(sparkR, 基于 parso), spark版本,读取5G的sas7bdat成功,但后续分析失败 parso(java), 读取5G的sas7bdat成功, 并基于它写了一个H2 Databased存储过程sasread sas7bdat(python),读取5G的sas7bdat成功

Read More

ReadStat: 免费 SAS, Stata, SPSS,RData,CSV之间互转工具

ReadStat是一款开源,跨平台的多格式数据互转工具(命令行程序),支持格式如下, SAS: SAS7BDAT and SAS7BCAT(读,写) Stata: DTA(读,写) SPSS: POR and SAV(读,写) R:rdata and RDS(读,写) CSV(写) XLSX(写) 下面是我在Macbook Pro下使用MXE编译的,偷懒,没有集成librdata和libxlsxwriter,欢迎下载试用(内存和CPU耗用非常小,速度还不错)。 readstat Windows64位版本 readstat win32版本 P.S. 尝试将一个5G的sas7bdat文件转为csv,32位的耗时更小,原因尚不清楚。

Read More

R与连接池

你能想到的,往往都有人帮你实现了,比如R下数据库连接池的问题,答案也是肯定的,而且是由大名顶顶RStudio来实现的,Object Pooling in R 这货不仅仅是数据库连接池,只是目前仅支持DBI罢了。 #devtools::install_github("rstudio/pool") library(pool) pool <- dbPool( drv = RMySQL::MySQL(), dbname = "shinydemo", host = "shiny-demo.csa7qlmguqrf.us-east-1.rds.amazonaws.com", username = "guest", password = "guest" ) dbGetQuery(pool, "SELECT * FROM…

Read More

将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)…

Read More

将R的data.frame写入MySQL数据库

这里主要想纠正一个问题,就是关于含中文字符的data frame写入MySQL时,网上给的错误说法:不能用dbWriteTable函数!! 基本思路就是判断变量(列名)和数据是否为utf8编码,如果不是则转为utf8 data.frame则被转为data.table,一则偷懒,二则速度快 如果是csv,强烈推荐data.table的fread,快,无编码坑 #library(readxl, quietly=TRUE) #df <- data.frame(read_excel("d:\\data.xlsx",col_names = TRUE),stringsAsFactors=FALSE) #如果是文本文件或者CSV,建议使用data.table,好处是快,以及避免read_csv的各种编码坑 #connect MySQL library(RMySQL) con <- dbConnect(MySQL(),user="user", password="pwd",dbname="db" , host="mysql.yourhost.com" ,port=3306) library(stringi) toutf8<-function(x) { if (is.factor(x)) { x<-as.character(x)…

Read More

使用R将Excel导入到PostgreSQL

R读取Excel的方法有很多,这个我将另外一篇来详细介绍,经过一翻实验,最喜欢的还是readxl, 它同时支持XLS和XLSX格式。 对于这段代码,需要注意的地方是,如果excel是中文,不执行 postgresqlpqExec(con, "SET client_encoding = 'GBK'") Windows下,数据库保存的将是乱码,macOS下不存在这个问题,Linux下没有测试。 而 c("my_schema","my_table") 的含义是指定schema和表名,如果是public,可以只给表名就可以了。 https://gist.github.com/alitrack/931e0eb83d06f12e86ea803549086ca0#file-xlsx2psql-r

Read More