下载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{{

5。环境变量

我正在将脚本等从使用硬编码值(例如,我的wrds idiangow)迁移到使用环境变量。 我使用的环境变量包括:

  • 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设置

如果您将PGHOSTPGDATABASEPGUSER设置为环境变量,则软件可以对它们进行grep。否则,用户在使用wrds_udpate()时需要指定它们。默认的PGPORT5432。同样,如果你严格按照上面的说明操作,你就不需要做任何事情。

需要两个变量tableschema

3.表格设置

要调整表格,请指定以下变量:

fix_missing:设置为True以修复缺少的值。默认值是False

fix_cr:设置为True以修复字符。默认值是False

drop:添加要删除的列名。例如,drop="id name"将删除列idname

^ {CD38>}:加入最大数量的观测值。例如,obs=10将从表中导出前10行。

rename:重命名列。例如,rename="fee=mngt_fee"fee重命名为mngt_fee

force:设置为True以强制更新。默认值是False

上传SAS文件

软件可以lso直接上传sas文件到pg,你需要有本地的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")

报告错误

作者:Ian Gow,ian.gow@unimelb.edu.au

撰稿人:张靖宇,jingyu.zhang@chicagobooth.edu

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java操作数组上的字符串   java JAXB内容未实例化   图形在Java中如何绘制垂直居中的字符串?   java Apache Ant:使用Junit时出现NoClassDefFoundError   java无法从服务器上运行perl脚本   如何在java中沿树进行预排序遍历,并打印0和1以对应每个节点上的特定字符?   java如何创建。p12文件?   java线程访问无效   java只匹配命名空间中的XML节点,而不知道NS前缀   从java获取2d arraylist元素   数组Java动态集合对象   java Xpath通过通配符或布尔运算查找以相同名称开头的节点?   java注释元素类型   java在中看不到Super()。反编译后的类文件