PG利用Multicorn訪問CSV外部數據源

Multicorn 是一個 PostgreSQL 9.1+ 的擴展模塊,用於簡化外部數據封裝開發,容許開發者使用 Python 編程語言開發。python

Install Multicorn

Requirements

  • Postgresql 9.1+
  • Postgresql development packages
  • Python development packages
  • python 2.7 or >= python 3.3 as your default python

因爲我前面已經安裝了postgresql9.5,下面安裝其餘的包。sql

$ sudo apt install postgresql-server-dev-9.5

安裝pgxn client

$ sudo apt install pgxnclient

Ubuntu 16.04 LTS自帶python3.5,可是安裝pgxnclient的時候會自動安裝python2.7,後面安裝Multicorn就依賴python2.7了,因此下面安裝python-dev。編程

$ sudo apt install python-dev

利用pgxn安裝Multicorn:app

$ sudo pgxn install multicorn

報以下錯:python2.7

/usr/bin/install -c -m 755  multicorn.so '/usr/lib/postgresql/9.5/lib/multicorn.so'
cp .//setup.py ./setup--1.3.3.py
sed -i -e "s/__VERSION__/1.3.3-dev/g" ./setup--1.3.3.py
python2.7 ./setup--1.3.3.py install
Traceback (most recent call last):
  File "./setup--1.3.3.py", line 3, in <module>
    from setuptools import setup, find_packages, Extension
ImportError: No module named setuptools
Makefile:31: recipe for target 'python_code' failed
make: *** [python_code] Error 1

Solution:編程語言

$ sudo apt install python-pip

安裝了pip以後繼續執行$ sudo pgxn install multicorn就沒報錯了。post

CSV Foreign Data Wrapper

Purpose

這個fdw被使用鏈接存儲的csv文件,表中定義的每一個列都將按照CSV文件中的列進行映射。ui

Usage example

咱們使用/tmp/test.csv,其內容以下:postgresql

Year,Make,Model,Length
1997,Ford,E350,2.34
2000,Mercury,Cougar,2.38

postgresql中聲明外部表:code

CREATE SERVER csv_srv foreign data wrapper multicorn options (
    wrapper 'multicorn.csvfdw.CsvFdw'
);


create foreign table csvtest (
       year numeric,
       make character varying,
       model character varying,
       length numeric
) server csv_srv options (
       filename '/tmp/test.csv',
       skip_header '1',
       delimiter ',');
       

select * from csvtest;
year |  make   | model  | length 
------+---------+--------+--------
 1997 | Ford    | E350   |   2.34
 2000 | Mercury | Cougar |   2.38
(2 rows)
相關文章
相關標籤/搜索