A postgres foreign data wrapper to help keep track of data files
Install with
pip install git+https://github.com/ASRCsoft/filesfdw.gitMake sure to install the package to the python installation used by postgres (should be the operating system's python 2).
After installing, create the multicorn extension in the postgres database:
CREATE EXTENSION multicorn;Restart postgres (from the terminal):
sudo service postgresql restartIn the database, create the foreign data servers and tables. Option base is the folder holding the data files:
# lidar csv files
CREATE SERVER lidar_csv_srv foreign data wrapper multicorn options(wrapper 'filesfdw.fdw.LidarCsv');
CREATE FOREIGN TABLE lidar_csv (date date, site text, radial text, scan text, environment text, config text, wind text, whole text) server lidar_csv_srv options(base '/farm1/mesonet/data/lidar_raw/');
# microwave radiometer csv files
CREATE SERVER mwr_csv_srv foreign data wrapper multicorn options(wrapper 'filesfdw.fdw.MwrCsv');
CREATE FOREIGN TABLE mwr_csv (time timestamp, site text, lv0 text, lv1 text, lv2 text, tip text, healthstatus text) server mwr_csv_srv options(base '/farm1/mesonet/data/mwr_raw/');
# lidar netcdf files
CREATE SERVER lidar_nc_srv foreign data wrapper multicorn options(wrapper 'filesfdw.fdw.LidarNetcdf');
CREATE FOREIGN TABLE lidar_netcdf (date date, site text, netcdf text) server lidar_nc_srv options(base '/farm1/mesonet/data/lidar_netcdf/');The foreign data tables lidar_csv, mwr_csv, and lidar_netcdf can now be queried just like any other postgres database. When a query is run, postgres runs a python script that finds the relevant data files and extracts some information from them (date/time, site, type of data file). The results of that script are then sent back to postgres and treated like a regular postgres table.