将WRDS表或SAS数据导入PostgreSQL。分叉的https://github.com/iangow/wrds2pg。

wrds2postgres的Python项目详细描述


WRDS(或SAS)到PostgreSQL

该软件有两个功能:

  • WRDS下载表并将它们馈送到PostgreSQL数据库。(需要访问WRD和相关数据。)
  • 将SAS文件(*.sas7dbat)导入PostgreSQL数据库。在

要求

1。Python

该软件使用python3,依赖于Pandas、SQLAlchemy和Paramiko。此外,Python脚本通常使用SQLAlchemy和Psycopg库与PostgreSQL交互。 这些依赖项是在使用Pip时安装的(请参阅下面的说明)。在

2。WRDS ID

要使用公钥身份验证访问WRDS,请按照从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"

在设置密钥时使用空密码短语,以便脚本可以在不需要用户干预的情况下运行。在

3。PostgreSQL

您应该有一个PostgreSQL数据库来存储数据。在

4。环境变量

代码可以使用的环境变量包括:

  • PGDATABASE:您使用的PostgreSQL数据库的名称。在
  • PGUSER:您在PostgreSQL数据库上的用户名。在
  • PGHOST:PostgreSQL数据库的位置(如果它与您在同一台机器上运行代码,那么它将是localhost
  • WRDS_ID:您的WRDSID

我在~/.profile中设置了这些环境变量:

^{pr2}$

使用函数wrds_update

需要两个参数table_name和{}。在

1。WRDS设置

使用函数调用中的wrds_id=your_wrds_id或环境变量WRDS_ID设置{}。在

2。PG设置

软件将使用环境变量PGHOSTPGDATABASE和{}(如果您设置了它们)。否则,您需要提供值作为wrds_udpate()的参数。默认PGPORT5432。在

3。表格设置

要定制请求,请指定以下参数:

  • fix_missing:设置为True以修复丢失的值。这处理特殊的missign值,SAS的PROC EXPORT将其转储为字符串。默认值是False。在
  • fix_cr:设置为True以修复字符。默认值是False。在
  • drop:添加要删除的列名(例如,drop="id name"将删除idname)。在
  • obs:添加观察的最大数量(例如,obs=10将从WRDS表中导入前10行)。在
  • rename:重命名列(例如,rename="fee=mngt_fee"fee重命名为mngt_fee)。在
  • force:设置为True以强制更新。默认值是False。在

将SAS数据导入PostgreSQL

该软件还可以直接将SAS文件上传到PostgreSQL。 您需要有本地SAS才能使用此功能。 使用fpath指定要导入的文件的路径

示例

这里有一些例子。在

如果您在这个git repo的主目录下,您可以导入并使用如下所示的软件。在

要从Github安装:

sudo -H pip3 install git+https://github.com/iangow/wrds2pg --upgrade

该软件也可从PyPI获得。要从PyPI安装:

pip3 install wrds2pg

用法示例:

fromwrds2pg.wrds2pgimportwrds_update# 1. Download crsp.mcti from wrds and upload to pg as crps.mcti# Simplest versionwrds_update(table_name="mcti",schema="crsp")# Tailored arguments wrds_update(table_name="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.mctiwrds_update(table_name="mcti",schema="crsp",fpath="your_path/test.sas7dbat")

报告Bugs

作者:伊恩·高,iandgow@gmail.com

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

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

推荐PyPI第三方库


热门话题
java为什么只为字符数组重载println方法,而不为字符串、整数等其他数组重载?   java将快速线程返回到池中,而不是等待慢速线程   创建jar文件时java SwingWorker不工作   java如何将依赖注入RabbitListener   java如何在gradle任务中通过scp复制目录?   java在MySql数据库中创建表时,遇到NullPointerException   java HTTP Status 500 Servlet执行引发异常   在JAVA中对arraylist使用继承时出错   java PowerMockito未完成存根异常   如果没有错误/警告增加到某个极限,java是否停止在eclipse中构建项目或使用maven?   java Robolectric如何测试DateFormat。getBestDateTimePattern()   google云平台GCP数据存储Java API,构建一个空值实体   VerifyListener和FocusListener之间的java冲突   安卓是否可以在Java中的另一个方法内部强制调用一个方法?   JavaWindows7、JDK1.8、SpringBoot应用程序JAR在方法安全性方面占用了大量时间。getProviders()返回   Bean提供程序的java错误消息   java Slick动画每帧必须有一个持续时间   java无法在Trie中设置isLeaf标志   java为什么JVM不能创建包含main方法的类的对象,以便从该类访问main方法,如果它具有该类的名称?   java Apache Camel+CXF端点身份验证