Stata连接MySQL数据库的方案

Stata连接MySQL数据库的方案

Stata可以通过ODBC连接数据库的,但是我试了很久也没有成功,然而昨天我想到了一个非常巧妙的方案······

昨天我成功的把R连接上了MySQL数据库,前天我介绍了rcall命令实现在Stata中运行R命令。于是我就想到了用Stata操作R连接数据库把数据读取再保存为csv文件,最后再由Stata读取。
下面的代码就可以实现这个过程:

1
2
rcall: library(RMySQL); setwd("~/Desktop");engine = dbConnect(RMySQL::MySQL(), dbname = '交易数据', username = 'root', password = '12345', host = 'localhost', port = 3306); ir = dbReadTable(engine, "002337前复权数据"); write.table(ir, file = "test.csv", sep = ',')
import delimited test.csv, clear

rcall运行一大串R命令的时候只需要用分号隔开即可。
为了方便读取数据我还写了下面的一个小命令:

1
2
3
4
5
6
7
8
cap prog drop mysql
prog def mysql
version 14.0
syntax, d(string) t(string)
rcall: library(RMySQL); engine = dbConnect(RMySQL::MySQL(), dbname = '`d'', username = 'root', password = '12345', host = 'localhost', port = 3306); dbSendQuery(engine,'SET NAMES utf8'); ir = dbReadTable(engine, "`t'"); write.table(ir, file = "~/Desktop/test.csv", sep = ',', row.name = F)
qui import delimited test.csv, encoding(utf8) clear varn(1)
erase test.csv
end

这个命令有两个选项:

  • d():选择数据库;
  • t():选择数据库中的表格。

示例:

1
2
3
4
5
mysql, d(交易数据) t(002337前复权数据)
mysql, d(宏观经济数据) t(季度GDP)
mysql, d(投资参考数据) t(2018年分配预案)
mysql, d(新闻事件数据) t(000001相关新闻)
mysql, d(拆借利率) t(ON香港同业拆借利率美元)

第一句命令的运行结果
你别说,还真的挺好用!
不过这样还是很难实现将数据写入数据库的操作。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×