有效数据包含外部数据_DuckDB FDW(外部数据包装器)来了
Why DuckDB系列:
Why DuckDB
Python单机查询1.5亿行数据秒出
DuckDB批量转CSV为Parquet
DuckDB FDW(外部数据包装器) 来了
想第一时间体验的,请移步 https://github.com/alitrack/duckdb_fdw
DuckDB【1】 很赞,但生态不完善;PostgreSQL 生态完善,那么就借势让DuckDB适应更多的应用场景,同时也给PostgreSQL带来强大的OLAP能力。
一个duckdb_fdw相当于,
DuckDB FDW
CSV FDW(远强大于PostgreSQL自带的file_fdw)
Parquet FDW
首先感谢sqlite_fdw【2】, duckdb_fdw【3】是在sqlite_fdw源代码的基础上改出来的,在开发的同时,学习FDW和C++的开发。
安装与体验
编译安装DuckDB
首先编译DuckDB,因为duckdb_fdw依赖sqlite3_api_wrapper, 这个在DuckDB的发行版本里没有提供。
$ git clone https://github.com/cwida/duckdbcd duckdbmake
接下来我们需要的是
build/release/tools/sqlite3_api_wrapper/libsqlite3_api_wrapper.dylib(对于Linux是libsqlite3_api_wrapper.so,Windows是libsqlite3_api_wrapper.dll)以及tools/sqlite3_api_wrapper/include/sqlite3.h
下载duckdb_fdw并编译
make USE_PGXS=1make install USE_PGXS=1
安装duckdb_fdw扩展,
CREATE EXTENSION duckdb_fdw;
创建外部服务器对象,
CREATE SERVER DuckDB_server FOREIGN DATA WRAPPER duckdb_fdw OPTIONS (database '/tmp/test.db');
创建外部表
CREATE FOREIGN TABLE t1(a integer, b text) SERVER DuckDB_server OPTIONS (table 't1_DuckDB');
或者批量导入外部表
IMPORT FOREIGN SCHEMA public FROM SERVER DuckDB_server INTO public;
测试CRUD(增删改查)
与使用本地表没有差别
INSERT INTO t1 VALUES(1,'PG'),(2,'FDW'),(3,'DuckDB');SELECT * FROM t1;UPDATE t1 SET b='DuckDB' WHERE a=1;DELETE FROM T1 WHERE a=1;
注:对于update和delete,则需要外部表(DuckDB表)第一列为主键,如果手工创建外部表,则需要添加OPTIONS (key 'true'),
CREATE FOREIGN TABLE t1(a integer OPTIONS (key 'true'), b text) SERVER DuckDB_server OPTIONS (table 't1_DuckDB');
对于DuckDB里基于csv(csv.gz)或者Parquet创建的视图也有很好的支持。
参考,
https://github.com/cwida/duckdb
https://github.com/pgspider/sqlite_fdw
https://github.com/alitrack/duckdb_fdw
http://www.postgres.cn/docs/12/postgres-fdw.html
欢迎star,fork和issue,https://github.com/alitrack/duckdb_fdw
有效数据包含外部数据_DuckDB FDW(外部数据包装器)来了相关推荐
- 服务器数据导出到excel文件,从外部数据源 (Power Query) 导入数据
转到"数据"选项卡>"从文本>外部数据". 然后, 在"导入文本文件 "对话框中,双击要导入的文本文件,"文本导入向导 ...
- spark写表指定外部表_spark 将dataframe数据写入Hive分区表
从spark1.2 到spark1.3,spark SQL中的SchemaRDD变为了DataFrame,DataFrame相对于SchemaRDD有了较大改变,同时提供了更多好用且方便的API. D ...
- hive删除hbase数据_Hive进阶:Hive通过外部表操作Hbase数据
概述: HBase: 查询效率比较高,常为实时业务提供服务,但是其查询方式比较单一,只能通过row方式get单条数据,或者通过scan加过滤器的方式扫描数据表获取数据. Hive: hive用来存储结 ...
- 外部表如何导入mysql_如何利用Oracle外部表导入文本文件的数据
Oracle外部表支持两种类型的驱动:一种是ORACLE_LOADER,外部表的数据必须来源于文件文件,另一种则是ORACLE_DATAPUMP,外部表的 同事最近在忙数据一致性比对工作,需要对不同文 ...
- 乐鑫esp8266学习rtos3.0笔记:esp产品 如何从外部读取 csv 文件的数据,比如从代码读取外部文件阿里云三元组。(附带demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个" ...
- excel oledb mysql_通用Excel设置外部数据源引入Access数据库数据时,提示:“尚未注册 OLE DB 访问接口 Microsoft.Ace.Oledb.12.0”...
在通用Excel中开发各种ERP.CRM.OA.进销存.内控管理.项目管理.工程施工管理.客户关系管理.绩效考核管理.销售管理.采购管理.仓库管理.行政管理.财务管理.人事管理.生产管理.考勤管理等系 ...
- Excel DAY 01 保护工作簿结构工作表 保护工作表填充柄文本记忆输入数据有效性验证导入外部数据文本 数值 日期选中多个数据冻结行头
Excel DAY 01 重点知识点 保护工作簿结构&工作表 保护工作表&填充柄&文本记忆输入&数据有效性验证&导入外部数据&文本 数值 日期& ...
- 区块链 以太坊 交易结构、执行、存储 解析 交易中为什么没有包含发送者地址这条数据
一. 交易的结构 1. Transaction结构 交易结构定义在 core/types/transaction.go 中: type Transaction struct {//交易数据data t ...
- pandas使用query函数查询dataframe指定数据列的内容(数值)不包含在特定列表中的数据行(not contain in list)
pandas使用query函数查询dataframe指定数据列的内容(数值)不包含在特定列表中的数据行(select rows which column values are not containe ...
最新文章
- python空字典添加元素_python遍历删除字典里值为空的元素报错
- Niagara 泵阀
- 谷歌浏览器 chrome 查看当前页面cookie
- 自动化测试,从入门到放弃
- python中的简单while循环及逻辑运算符
- ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 80 Days(双向队列+尺取法)
- CodeForces - 1327E Count The Blocks(组合数学)
- java冒泡遍历对象_Java经典排序算法(冒泡、选择、插入)
- el表达式取值优先级
- 从用户的角度看 c语言中函数有两种,【南开大学】20秋学期(1709、1803、1809、1903、1909、2003、2009 )《C语言程序设计》在线作业答卷...
- win11WiFi驱动如何下载 windows11WiFi驱动下载的步骤方法
- 最佳mysql可视化管理工具_2014年十大最佳MySQL可视化管理工具
- dnfdpl服务器维护了,梦想开始的地方丨山东沙排女将王鑫鑫奥运首秀止步八强 怕影响训练父母没来济南探望过...
- LCP 22. 黑白方格画(排列组合)
- 2020-09-22关于dialog 问题
- TestBird《2021中国手游测试白皮书》---海外手游
- 自动化测试 selenium 模块 webdriver使用02
- 编码——永不退色的计算机科学经典著作
- acwing----春季每日一题2022篇(二)
- 【十五】【vlc-android】vlc-sout流媒体输出端源码实现分析【Part 2】【03】