Multicorn 是一个 PostgreSQL 9.1+ 的扩展模块,用于简化外部数据封装开发,容许开发者使用 Python 编程语言开发。python
因为我前面已经安装了postgresql9.5,下面安装其余的包。sql
$ sudo apt install postgresql-server-dev-9.5
$ 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
这个fdw被使用链接存储的csv文件,表中定义的每一个列都将按照CSV文件中的列进行映射。ui
咱们使用/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)