下载wrds表并上传到postgresql,将sas文件上传到pg
wrds2pg的Python项目详细描述
WRDS到PG的迁移
此软件有两个功能:
- 从WRDS下载表并上传到pg.
- 将SAS文件(
*.sas7dbat
)上载到pg.
只有当您有权访问wrd和相关数据时,代码才能工作。
要求
1.吉特
虽然严格来说这里不需要使用脚本,Git可能使下载和更新变得更容易。
如果所有git存储库都保存在~/git
中,请使用以下命令克隆此存储库:
cd ~/git
git clone https://github.com/iangow/wrds2pg.git
这将在~/git/wrds2pg
中创建存储库的副本。请注意,可以通过转到目录并“提取”最新代码来获取存储库的更新:
cd ~/git/wrds2pg
git pull
或者,您可以在github上分叉存储库,然后克隆。使用ssh url(例如git@github.com:iangow/wrds2pg.git
)进行克隆对于git拉取和推送在rstudio中正常工作是必要的。
2.Python
该软件使用python 3,依赖于pandas、sqlalchemy和paramiko。此外,python脚本通常使用psycopg(参见here)和sqlalchemy与postgresql交互。
3.一个WRDS ID
要使用公钥身份验证访问wrd,请按照here中的提示设置公钥。把钥匙从我电脑的终端复制到WRDS服务器。(注意,这段代码假设您的主目录中有一个目录.ssh
。如果没有,请通过ssh登录wrds,然后键入mkdir ~/.ssh
来创建这个。)下面是创建密钥并将其发送到wrds的代码(对我来说):
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub | ssh iangow@wrds-cloud.wharton.upenn.edu "cat >> ~/.ssh/authorized_keys"
在设置密钥时使用空密码短语,以便脚本可以在没有用户干预的情况下运行。
4.PostgreSQL
您应该有一个postgresql数据库来存储数据。也有一些数据依赖性,一些脚本假定数据库中存在其他数据。此外,我假设一个角色^ {< CD7> }的存在(SQL{{ 我正在将脚本等从使用硬编码值(例如,我的wrds id 我在 我还在 用 如果您将 需要两个变量 要调整表格,请指定以下变量: ^ {CD38>}:加入最大数量的观测值。例如, 软件可以lso直接上传sas文件到pg,你需要有本地的sas才能使用这个功能。 使用 这里有一些例子。 作者:Ian Gow,ian.gow@unimelb.edu.au 撰稿人:张靖宇,jingyu.zhang@chicagobooth.edu5。环境变量
iangow
)迁移到使用环境变量。
我使用的环境变量包括:PGDATABASE
:您使用的postgresql数据库的名称。PGUSER
:您在postgresql数据库上的用户名。PGHOST
:postgresql数据库的位置(如果它与运行代码的机器在同一台机器上,则为localhost
)WRDS_ID
:您的WRDSID。~/.profile
:export PGHOST="localhost"
export PGDATABASE="crsp"
export WRDS_ID="iangow"
export PGUSER="igow"
source ~/.profile
~/.Rprofile
中设置它们,因为rstudio似乎没有在最新版本的os x中获取~/.profile
中的设置:Sys.setenv(PGHOST="localhost")
Sys.setenv(PGDATABASE="crsp")
设置
1.WRDS设置
wrds_id=your_wrds_id
设置WRDS_ID
,否则软件将从os环境变量中grep。如果你严格遵守上面的指示,你就不需要做任何事情。2.PG设置
PGHOST
、PGDATABASE
、PGUSER
设置为环境变量,则软件可以对它们进行grep。否则,用户在使用wrds_udpate()
时需要指定它们。默认的PGPORT
是5432
。同样,如果你严格按照上面的说明操作,你就不需要做任何事情。table
和schema
。3.表格设置
fix_missing
:设置为True
以修复缺少的值。默认值是False
。fix_cr
:设置为True
以修复字符。默认值是False
。drop
:添加要删除的列名。例如,drop="id name"
将删除列id
和name
。obs=10
将从表中导出前10行。rename
:重命名列。例如,rename="fee=mngt_fee"
将fee
重命名为mngt_fee
。force
:设置为True
以强制更新。默认值是False
。上传SAS文件
fpath
指定文件路径。示例
fromwrds2pgimportwrds2pg# 1. Download crsp.mcti from wrds and upload to pg as crps.mcti# Simplest versionwrds2pg.wrds_update(table="mcti",schema="crsp")# Tailor table to your needswrds2pg.wrds_update(table="mcti",schema="crsp",host=your_pghost,dbname=your_pg_database,fix_missing=True,fix_cr=True,drop="b30ret b30ind",obs=10,rename="caldt=calendar_date",force=True)# 2. Upload test.sas7dbat to pg as crsp.mctiwrds2pg.wrds_update(table="mcti",schema="crsp",fpath="your_path/test.sas7dbat")
报告错误
推荐PyPI第三方库