2022 年 1 月 27 日Kevin Crow,首席软件开发人员
在 Stata 中使用沃顿研究数据服务 (WRDS) 数据现在变得更加容易。我之前写过关于通过 ODBC 访问 WRDS 数据的文章。在 Stata 17 中,使用 JDBC 使配置 WRDS 和 Stata 变得更加容易-并且所有操作系统的配置步骤都是相同的。无论您将 WRDS 数据下载到本地计算机还是在云中工作,在 Stata for JDBC 中使用的命令都是jdbc。
要设置jdbc,您需要下载 JDBC 驱动程序.jar文件。要获取正确的.jar文件,请访问您的数据库供应商的网站。WRDS 平台使用 Postgres 数据库,因此请从https://jdbc.postgresql.org/download.html下载驱动程序。只要您沿着 Stata 的 ado-path 保存文件,这个.jar文件就可以在 Unix、Mac 或 Windows 上与jdbc一起使用。我将下载的.jar文件移动到我的 Windows 机器上的个人 ado-path 目录中,即
C:\Users\kevin\ado\personal/
对于我的 Mac,它是
/Users/kevin/Documents/Stata/ado/personal
对于 Unix,它是
/home/kevin/ado/personal
无论是在 WRDS 云中还是在您的机器上本地工作,您还需要正确的 Java 驱动程序类名称、URL、用户名和密码。对于 WRDS,您的连接设置将与我的相同,除了 WRDS 将提供的用户名和密码。设置是
JDBC 设置 | WRDS 设置 |
驱动程序文件 | postgresql-42.3.0.jar |
Java 类名 | org.postgresql.Drive |
网址 | jdbc:postgresql://wrds-pgdata.wharton.upenn.edu:9737 |
用户名 | stata |
密码 | secret |
请注意,JDBC 的典型 URL 语法是
jdbc:DBVenderName :// IP_or_URL :端口/ DBName ?连接选项
因为这些设置很难记住,所以最好创建一个存储它们的 do-file。我的文件是
local jar “postgresql-42.3.0.jar”
local classname “org.postgresql.Driver”
local url “jdbc:postgresql://wrds-pgdata.wharton.upenn.edu:9737/wrds?ssl=require&sslfactory=org.postgresql.ssl.NonValidatingFactory”
local user “stata”
local pass “secret”
要为当前的 Stata 会话存储这些设置,请将以下jdbc connect命令添加到您的 do-file,然后运行do-file。
jdbc connect, jar(“`jar'”) driverclass(“`classname'”) url(“`url'”) ///
user(“`user'”) password(“`pass'”)
jdbc会记住您对整个 Stata 会话的最后设置。如果您希望这些在会话之间存储,您可以将它们添加到profile.do文件中。
要列出数据库中的所有表,请键入jdbc showtables。
通常,此命令显示的列表长达数百行。在 WRDS 中搜索特定表的方法是使用 SQL 通配符。例如,%通配符匹配零个或多个字符。
. jdbc showtables dj_equities_201%
Database: wrds
—————————————————————————-
Tables
—————————————————————————-
dj_equities_2010
dj_equities_2011
dj_equities_2012
dj_equities_2013
dj_equities_2014
dj_equities_2015
dj_equities_2016
dj_equities_2017
dj_equities_2018
dj_equities_2019
如果您知道表的名称,则可以通过键入jdbc load, table(“djdaily”)来加载它。
如果表很大,最好加载需要分析的数据库列,而不是加载整个表。这样做可以节省内存。要列出表的列,请使用jdbc describe。
. jdbc describe djdaily
(28073 observations loaded)
Table: djdaily
—————————————————————————-
Column name Column type
—————————————————————————-
date date
djc float8
djct float8
dji float8
djit float8
djt float8
djtt float8
dju float8
djut float8
date date
djc float8
djct float8
dji float8
djit float8
djt float8
djtt float8
dju float8
djut float8
您可以使用SELECT SQL 语句加载表的特定列。
. jdbc load, exec(“SELECT date, djc, dji, djit FROM djdaily”)
(28073 observations loaded)
在这里,我向您展示了使用 Stata 17 的新jdbc命令处理 WRDS 数据的几种方法。如果您在另一个云环境中工作或使用不同的数据库供应商,则配置 JDBC 和 Stata 的步骤应该相似。此外,jdbc还有很多我没有演示的其他特性。jdbc有其他子命令来帮助管理数据库连接、插入数据和执行 SQL 语句。您可以在Stata Data Management Reference Manual的[D] jdbc条目中了解这些子命令。