Stata · 2022年2月18日

沃顿研究数据服务、Stata 17 和 JDBC

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条目中了解这些子命令。