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创建的视图也有很好的支持。

参考,

  1. https://github.com/cwida/duckdb

  2. https://github.com/pgspider/sqlite_fdw

  3. https://github.com/alitrack/duckdb_fdw

  4. http://www.postgres.cn/docs/12/postgres-fdw.html

欢迎star,fork和issue,https://github.com/alitrack/duckdb_fdw

有效数据包含外部数据_DuckDB FDW(外部数据包装器)来了相关推荐

  1. 服务器数据导出到excel文件,从外部数据源 (Power Query) 导入数据

    转到"数据"选项卡>"从文本>外部数据". 然后, 在"导入文本文件 "对话框中,双击要导入的文本文件,"文本导入向导 ...

  2. spark写表指定外部表_spark 将dataframe数据写入Hive分区表

    从spark1.2 到spark1.3,spark SQL中的SchemaRDD变为了DataFrame,DataFrame相对于SchemaRDD有了较大改变,同时提供了更多好用且方便的API. D ...

  3. hive删除hbase数据_Hive进阶:Hive通过外部表操作Hbase数据

    概述: HBase: 查询效率比较高,常为实时业务提供服务,但是其查询方式比较单一,只能通过row方式get单条数据,或者通过scan加过滤器的方式扫描数据表获取数据. Hive: hive用来存储结 ...

  4. 外部表如何导入mysql_如何利用Oracle外部表导入文本文件的数据

    Oracle外部表支持两种类型的驱动:一种是ORACLE_LOADER,外部表的数据必须来源于文件文件,另一种则是ORACLE_DATAPUMP,外部表的 同事最近在忙数据一致性比对工作,需要对不同文 ...

  5. 乐鑫esp8266学习rtos3.0笔记:esp产品 如何从外部读取 csv 文件的数据,比如从代码读取外部文件阿里云三元组。(附带demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个" ...

  6. excel oledb mysql_通用Excel设置外部数据源引入Access数据库数据时,提示:“尚未注册 OLE DB 访问接口 Microsoft.Ace.Oledb.12.0”...

    在通用Excel中开发各种ERP.CRM.OA.进销存.内控管理.项目管理.工程施工管理.客户关系管理.绩效考核管理.销售管理.采购管理.仓库管理.行政管理.财务管理.人事管理.生产管理.考勤管理等系 ...

  7. Excel DAY 01 保护工作簿结构工作表 保护工作表填充柄文本记忆输入数据有效性验证导入外部数据文本 数值 日期选中多个数据冻结行头

    Excel DAY 01 重点知识点 保护工作簿结构&工作表 保护工作表&填充柄&文本记忆输入&数据有效性验证&导入外部数据&文本 数值 日期& ...

  8. 区块链 以太坊 交易结构、执行、存储 解析 交易中为什么没有包含发送者地址这条数据

    一. 交易的结构 1. Transaction结构 交易结构定义在 core/types/transaction.go 中: type Transaction struct {//交易数据data t ...

  9. pandas使用query函数查询dataframe指定数据列的内容(数值)不包含在特定列表中的数据行(not contain in list)

    pandas使用query函数查询dataframe指定数据列的内容(数值)不包含在特定列表中的数据行(select rows which column values are not containe ...

最新文章

  1. python空字典添加元素_python遍历删除字典里值为空的元素报错
  2. Niagara 泵阀
  3. 谷歌浏览器 chrome 查看当前页面cookie
  4. 自动化测试,从入门到放弃
  5. python中的简单while循环及逻辑运算符
  6. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 80 Days(双向队列+尺取法)
  7. CodeForces - 1327E Count The Blocks(组合数学)
  8. java冒泡遍历对象_Java经典排序算法(冒泡、选择、插入)
  9. el表达式取值优先级
  10. 从用户的角度看 c语言中函数有两种,【南开大学】20秋学期(1709、1803、1809、1903、1909、2003、2009 )《C语言程序设计》在线作业答卷...
  11. win11WiFi驱动如何下载 windows11WiFi驱动下载的步骤方法
  12. 最佳mysql可视化管理工具_2014年十大最佳MySQL可视化管理工具
  13. dnfdpl服务器维护了,梦想开始的地方丨山东沙排女将王鑫鑫奥运首秀止步八强 怕影响训练父母没来济南探望过...
  14. LCP 22. 黑白方格画(排列组合)
  15. 2020-09-22关于dialog 问题
  16. TestBird《2021中国手游测试白皮书》---海外手游
  17. 自动化测试 selenium 模块 webdriver使用02
  18. 编码——永不退色的计算机科学经典著作
  19. acwing----春季每日一题2022篇(二)
  20. 【十五】【vlc-android】vlc-sout流媒体输出端源码实现分析【Part 2】【03】

热门文章

  1. 优化就是在和时间赛跑
  2. rest-assured之获取响应数据(Getting Response Data)
  3. Google传奇Jeff Dean最新演讲:如何构建未来的机器学习芯片
  4. Windows Server 2003服务器安装前设置
  5. 使用 Core Graphics 绘制基本形状
  6. 在命令行上启用 64 位 Visual C++ 工具集
  7. 数组的连续最大子段和
  8. ajaxFileUpload plugin上传文件 chrome、Firefox中出现SyntaxE
  9. Pl/SQL Developer 配置
  10. Juniper大中国区于肇烈