前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PostgreSQL利用Multicorn访问CSV外部数据源

PostgreSQL利用Multicorn访问CSV外部数据源

作者头像
伊泽瑞尔
发布2022-06-01 08:34:52
5330
发布2022-06-01 08:34:52
举报

Multicorn 是一个 PostgreSQL 9.1+ 的扩展模块,用于简化外部数据封装开发,允许开发者使用 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,下面安装其他的包。测试使用的操作系统是Ubuntu。

代码语言:javascript
复制
sudo apt install postgresql-server-dev-9.5

安装pgxn client

代码语言:javascript
复制
$ sudo apt install pgxnclient

Ubuntu 16.04 LTS自带python3.5,但是安装pgxnclient的时候会自动安装python2.7,后面安装Multicorn就依赖python2.7了,所以下面安装python-dev。

代码语言:javascript
复制
$ sudo apt install python-dev

利用pgxn安装Multicorn:

代码语言:javascript
复制
$ sudo pgxn install multicorn

报如下错:

代码语言:javascript
复制
/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:

代码语言:javascript
复制
$ sudo apt install python-pip

安装了pip之后继续执行$ sudo pgxn install multicorn就没报错了。

CSV Foreign Data Wrapper

Purpose

这个fdw被使用连接存储的csv文件,表中定义的每个列都将按照CSV文件中的列进行映射。

Usage example

我们使用/tmp/test.csv,其内容如下:

代码语言:javascript
复制
Year,Make,Model,Length
1997,Ford,E350,2.34
2000,Mercury,Cougar,2.38

postgresql中声明外部表:

代码语言:javascript
复制
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)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据与知识图谱 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Install Multicorn
    • Requirements
      • 安装pgxn client
      • CSV Foreign Data Wrapper
        • Purpose
          • Usage example
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档