Apache Doris ODBC外表之Postgresql使用指南
Apache Doris 社区 2022 年的总体规划,包括待开展或已开展、以及已完成但需要持续优化的功能、文档、社区建设等多方面,我们期待有更多的小伙伴参与进来讨论。同时也希望多多关注Doris,给Doris加Star
该使用指南之针对Ubuntu环境来进行测试的,Centos环境可以参考,但是不确保一定能成功。
1.软件环境
- 操作系统:ubuntu 18.04
- Apache Doris :0.15
- Postgresql数据库:PostgreSQL 12.9
- UnixODBC:2.3.4
- Mysql Connector ODBC :5.3.13、8.0.11、8.0.26
2.安装ODBC驱动
首先我们安装unixODBC驱动、这里直接给出驱动的下载地址及安装命令
sudo wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.4.tar.gz
tar -xvzf unixODBC-2.3.4.tar.gz
cd unixODBC-2.3.4/
sudo ./configure --prefix=/usr/local/unixODBC-2.3.7 --includedir=/usr/include --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etc
make
sudo make install
安装成功后,unixODBC所需的头文件都被安装到了/usr/inlucde下,编译好的库文件安装到了/usr/lib下,与unixODBC相关的可执行文件安装到了/usr/bin下,配置文件放到了/etc下。
验证安装是否成功
# odbcinst -j
unixODBC 2.3.4
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
3.安装Postgresql数据库
Ubuntu的默认存储库包含Postgres软件包,因此您可以使用apt
安装这些软件包。
安装之前先用apt
更新一下本地软件包,然后,安装Postgres
包和一个附加实用程序和功能的- managed
包:
$ sudo apt update
$ sudo apt install postgresql postgresql-contrib
现在已经安装了该软件,我们可以了解它的工作原理以及它与您可能使用的类似数据库管理系统的不同之处。
3.1 使用PostgreSQL roles和数据库
默认情况下,Postgres使用称为“roles”的概念来处理身份验证和授权。在某些方面,这些类似于常规的Unix风格帐户,但Postgres不区分用户和组,而是更喜欢更灵活的术语“roles”。
安装后,Postgres设置为使用ident身份验证,这意味着它将Postgresroles与匹配的Unix / Linux系统帐户相关联。如果Postgres中存在roles,则具有相同名称的Unix / Linux用户名可以作为该roles登录。
安装过程创建了一个名为postgres的用户帐户,该帐户与默认的Postgresroles相关联。要使用Postgres,您可以登录该帐户。
有几种方法可以使用此帐户访问Postgres。
3.2 切换到postgres帐户
输入以下内容切换到服务器上的postgres帐户:
$ sudo -i -u postgres
您现在可以通过输入以下内容立即访问Postgres提示:
$ psql
这将使您进入PostgreSQL提示符,从此处您可以立即与数据库管理系统进行交互。
输入以下命令退出PostgreSQL提示符:
postgres=# \q
这将带您回到postgres
Linux命令提示符。
3.3 在不切换帐户的情况下访问Postgres
您也可以让postgres帐户用sudo
运行您想要的命令。
例如,在最后一个示例中,您被指示通过首先切换到postgres用户然后运行psql
以打开Postgres提示来进入Postgres提示。您可以通过psql
以postgres用户身份运行单个命令来一步完成此操作sudo
,如下所示:
$ sudo -u postgres psql
这将直接登录到Postgres,中间没有中间bash
shell。
同样,您可以通过输入以下内容退出交互式Postgres会话:
postgres=# \q
许多用例需要多个Postgresroles。继续阅读以了解如何配置这些
3.4 创建用户,数据库及表
使用默认用户登录postgresql创建用户、创建数据库及完成授权
$ sudo -u postgres psql
创建数据库新用户,如 dbuser:
postgres=# CREATE USER dbuser WITH PASSWORD 'zhangfeng';
注意:
语句要以分号结尾。 密码要用单引号括起来。 创建用户数据库,你也可以通过你创建的用户登录进去以后创建数据库,如demo:
postgres=# CREATE DATABASE demo OWNER dbuser;
将demo数据库的所有权限都赋予dbuser:
postgres=# GRANT ALL PRIVILEGES ON DATABASE demo TO dbuser;
使用命令 \q 退出psql:
postgres=# \q
创建Linux普通用户,与刚才新建的数据库用户同名,如 dbuser:
$ sudo adduser dbuser
$ sudo passwd dbuser
以dbuser的身份连接数据库exampledb:
$ su - dbuser
Password:
Last login: Wed Mar 1 11:52:07 CST 2017 on pts/
用我们创建的用户(dbuser)登录psql
# sudo -u dbuser psql -U dbuser -d demo
could not change directory to "/root": Permission denied
psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1))
Type "help" for help.
demo=> \d
List of relations
Schema | Name | Type | Owner
--------+---------------------------+----------+----------
public | playground | table | postgres
public | playground_1 | table | dbuser
public | playground_1_equip_id_seq | sequence | dbuser
public | playground_equip_id_seq | sequence | postgres
(4 rows)
创建表及插入数据
CREATE TABLE playground_test_odbc (
equip_id serial PRIMARY KEY,
type varchar (50) NOT NULL,
color varchar (25) NOT NULL,
location varchar(25) ,
install_date date
);
示例数据
INSERT INTO playground_test_odbc (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
INSERT INTO playground_test_odbc (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');
执行结果
demo=> CREATE TABLE playground_test_odbc (
demo(> equip_id serial PRIMARY KEY,
demo(> type varchar (50) NOT NULL,
demo(> color varchar (25) NOT NULL,
demo(> location varchar(25) ,
demo(> install_date date
demo(> );
CREATE TABLE
demo=> INSERT INTO playground_test_odbc (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
INSERT 0 1
demo=> INSERT INTO playground_test_odbc (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');
INSERT 0 1
4.安装Postgresql ODBC驱动
这里我们下载是和数据版本相对于的驱动程序
Postgresql ODBC驱动下载地址:https://www.postgresql.org/ftp/odbc/versions/src/
wget https://ftp.postgresql.org/pub/odbc/versions/src/psqlodbc-12.02.0000.tar.gz
tar zxvf psqlodbc-12.02.0000.tar.gz
cd psqlodbc-12.02.0000
./configure --without-libpq (注:由于本机未安装postgresql,故使用without-libpq选项)
./configure
make
make install
如果在编译过程中出现下面的错误
configure: error: libpq library version >= 9.2 is required
这是因为缺少libpq的包,需要进行安装,执行下面的命令
apt-get install libpq-dev
安装成功,默认驱动放在/usr/local/lib/psqlodbcw.so下
5.验证ODBC驱动是否成功
5.1 配置注册Postgresql ODBC驱动
编辑/etc/odbcinst.ini,加入下面的内容
[PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /usr/local/lib/psqlodbcw.so
Driver64 = /usr/local/lib/psqlodbcw.so
Setup = /usr/lib/libodbc.so ##注意这里是在第二节安装的unixODBC的so文件路径
Setup64 = /usr/lib/libodbc.so
FileUsage = 1
5.2 配置PG 数据源
编辑/etc/odbc.ini
加入下面内容
[PostgresDB]
Driver = PostgreSQL ###这里的名称和odbcinst.ini里配置的名称一致
Description = Postgres DSN
Servername = localhost
Database = demo
Username = dbuser
Password = zhangfeng
Port = 5432
ReadOnly = No
其他的是你的Postgresql地址及刚才创建的用户、密码、数据库、端口等
5.3 验证是否成功
isql -v PostgresDB dbuser zhangfeng
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
注意这里的PostgresDB是我们在odbc.ini里定义的名称,这里显示ODBC正常
6.Apache Doris PG外表验证
6.1 修改配置
修改BE节点conf/odbcinst.ini文件,加入刚才/etc/odbcinst.ini添加的一样内容,并删除原先的PostgreSQL配置
[PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /usr/local/lib/psqlodbcw.so
Driver64 = /usr/local/lib/psqlodbcw.so
Setup = /usr/lib/libodbc.so
Setup64 = /usr/lib/libodbc.so
FileUsage = 1
6.2 验证
创建PG ODBC Resource
CREATE EXTERNAL RESOURCE `pg_12`
PROPERTIES (
"host" = "localhost",
"port" = "5432",
"user" = "dbuser",
"password" = "zhangfeng",
"database" = "demo",
"table" = "playground_test_odbc",
"driver" = "PostgreSQL",
"odbc_type" = "postgresql",
"type" = "odbc_catalog"
);
创建ODBC外表
CREATE EXTERNAL TABLE `playground_odbc_12` (
equip_id int NOT NULL,
type varchar (50) NOT NULL,
color varchar (25) NOT NULL,
location varchar(25) ,
install_date date
) ENGINE=ODBC
COMMENT "ODBC"
PROPERTIES (
"odbc_catalog_resource" = "pg_12",
"database" = "demo",
"table" = "playground_test_odbc"
);
在Doris下执行查询:
ysql> show tables;
+--------------------+
| Tables_in_demo |
+--------------------+
| playground_odbc_12 |
| test_odbc_5 |
| test_odbc_8 |
| test_odbc_8_0_26 |
| test_odbc_mysql |
| test_odbc_mysql_8 |
+--------------------+
6 rows in set (0.00 sec)
mysql> select * from playground_odbc_12;
+----------+-------+--------+-----------+--------------+
| equip_id | type | color | location | install_date |
+----------+-------+--------+-----------+--------------+
| 1 | slide | blue | south | 2017-04-28 |
| 2 | swing | yellow | northwest | 2018-08-16 |
+----------+-------+--------+-----------+--------------+
2 rows in set (0.01 sec)
OK,一切正常,相对Mysql PG的ODBC驱动更简单一些,只要你的PG版本和ODBC驱动版本对应上问题都不大
Apache Doris ODBC外表之Postgresql使用指南的更多相关文章
- Apache Doris ODBC外表数据库主流版本及其ODBC版本对应关系
本文是在CentOS 7.9下测试通过 使用的Doris是:0.15.0 unixODBC版本是:2.3.1 1.PostgreSQL 以下是PostgreSQL数据库版本和PostgreSQL OD ...
- Apache Doris ODBC Mysql外表在Ubuntu下使用方法及配置
Apache Doris 社区 2022 年的总体规划,包括待开展或已开展.以及已完成但需要持续优化的功能.文档.社区建设等多方面,我们期待有更多的小伙伴参与进来讨论.同时也希望多多关注Doris,给 ...
- CentOS下Apache Doris Oracle ODBC外表使用指南
1.软件环境 操作系统:CentOS 7.8 Apache Doris :0.15 Postgresql数据库:oracle 19c UnixODBC:2.3.1 Oracle ODBC :insta ...
- Apache Doris Oracle ODBC外表使用指南
1.软件环境 操作系统:ubuntu 18.04 Apache Doris :0.15 Postgresql数据库:oracle 19c UnixODBC:2.3.4 Oracle ODBC :ins ...
- Apache Doris 通过ODBC连接SQL Server
社区有小伙伴有使用Doris ODBC外表连接SQL Server数据库,使用中遇到不知道驱动怎么安装,苦于我这边也没有SQL Server的环境,正好社区有用户使用了这个数据库,也安装ODBC驱动测 ...
- 基于Ansible实现Apache Doris快速部署运维指南
Doris Ansible 使用指南 Apache Doris 介绍 Apache Doris是一个现代化的MPP分析型数据库产品.仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析.Apac ...
- [Apache Doris] Apache Doris 元数据设计及DDL操作源码阅读
元数据设计 如上图,Doris 的元数据主要存储4类数据: 用户数据信息.包括数据库.表的 Schema.分片信息等. 各类作业信息.如导入作业,Clone 作业.SchemaChange 作业等. ...
- 通过Nginx TCP反向代理实现Apache Doris负载均衡
概述 Nginx能够实现HTTP.HTTPS协议的负载均衡,也能够实现TCP协议的负载均衡.那么,问题来了,可不可以通过Nginx实现Apache Doris数据库的负载均衡呢?答案是:可以.接下来, ...
- Apache Doris 单节点(可多节点)Docker集群制作教程
集群制作Author:苏奕嘉脚本研发Author:种益调研测试Author:杨春东 前言 Apache Doris是当下非常火热和流行的MPP架构OLAP数据库,很多同学想自学/测试Doris的使用和 ...
随机推荐
- 什么是 Netflix Feign?它的优点是什么?
Feign 是受到 Retrofit,JAXRS-2.0 和 WebSocket 启发的 java 客户端联编程序. Feign 的第一个目标是将约束分母的复杂性统一到 http apis,而不考虑其 ...
- Redis的集群搭建(四)
1.redis-cluster架构图 2.redis-cluster投票:容错 架构细节: (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. (2) ...
- Docker 的目的是什么?
Docker 提供了一个可用于托管任何应用程序的容器环境.在此,软件应用程序和 支持它的依赖项紧密打包在一起. 因此,这个打包的产品被称为 Container,因为它是由 Docker 完成的,所以它 ...
- ArrayList、LinkedList、Vector、Array
ArrayList 本质是一个数组. 优势:追加元素到数组末尾的时候速度快,同时检索元素的速度也快. 劣势:如果要插入一个元素到数组之间慢:如果要追加的元素数量多于数组的容量,则需要频繁扩容使用Arr ...
- 12 Factor App
The Twelve-Factor App Introduction In the modern era, software is commonly delivered as a service: c ...
- Kurento安装与入门08——Group Call
Group Call 本示例展示了一个视频聊天室的功能,不同的聊天室之间互相隔离. 官网文档 Group Call 首先从github上获取代码(如果已经获取可以跳过,获取的代码已经包括后面的示例代码 ...
- 假期任务一:安装好JAVA开发环境并且在Eclipse上面成功运行HelloWorld程序
(本周主要做了java环境的安装,安装完jdk后又安装了eclipse,平均每天两小时Java吧,这周敲代码的时间比较少,大多是在b站看java入门视频和菜鸟教程的基础语法,也就打开eclipse验证 ...
- number(10,6)正则表达式
/** * 判断number(10,6) * @param dateStr * @return */ public boolean isNumJW(String ...
- 引入css的方式
---恢复内容开始--- 引入css的样式及link和@import的区别 有3种引入方式 1.内部样式(写在标签内) 2.内联样式 3.外部样式(link @import) 区别: 1.本质区别:l ...
- 在 WASI 上运行 .NET 7 应用程序
WASI代表 WebAssembly 系统接口,WASI 让沙盒化的 WebAssembly 应用程序通过一系列类似 POSIX 的函数访问底层操作系统,允许独立于浏览器运行 WebAssembly ...