当前位置: 首页 > news >正文

DuckDB读取xlsx格式数据的方法比较

1.安装插件
a. DuckDB官方excel插件
b. 社区sheetreader插件,最高只适配到duckdb 1.2.2版本
2.数据准备
a. polars自带的foods.csv转成的foods.xlsx
b. 如下python代码生成带日期格式、小数格式的sale.txt
要求预先安装pandas,duckdb,openpyxl模块

import duckdb
duckdb.sql("""
create table sale(s_name varchar,s_date date,good_id int,
v1 decimal(15,2),
v2 decimal(15,2),
v3 decimal(15,2),
v4 decimal(15,2),
v5 decimal(15,2),
v6 decimal(15,2),
v7 decimal(15,2),
v8 decimal(15,2),
v9 decimal(15,2),
v10 decimal(15,2),
v11 decimal(15,2),
v12 decimal(15,2),
v13 decimal(15,2),
v14 decimal(15,2),
v15 decimal(15,2),
v16 decimal(15,2),
v17 decimal(15,2),
v18 decimal(15,2),
v19 decimal(15,2),
v20 decimal(15,2),
);
""")
duckdb.sql("""
insert into sale select 'sale'||i,date'2020-10-10'+i::int,i,
i*0.1*1,i*0.1*2,i*0.1*3,i*0.1*4,i*0.1*5,i*0.1*6,i*0.1*7,i*0.1*8,i*0.1*9,i*0.1*10,
i*0.1*11,i*0.1*12,i*0.1*13,i*0.1*14,i*0.1*15,i*0.1*16,i*0.1*17,i*0.1*18,i*0.1*19,i*0.1*20
from range(20)t(i);
""")
df0=duckdb.sql("from sale").to_df()
df0.to_excel("pysale20.xlsx",index=False)

c.社区sheetreader插件同一个团队开发的postgresql插件中的示例lineitem.xlsx文件。
d.利用excel插件对tpch基准lineitem表生成的exli2.xlsx文件。
3.读取功能测试
a. excel读取4种文件都能成功。
b. sheetreader读取第一、第三种成功,第二、第四种失败,报错。

D from sheetreader('pysale20.xlsx');
Binder Error:
Inline & dynamic String types not supported yet

4.性能测试
因为人造的xlsx文件某些插件无法读取,在网上找了个现成的纽约车管所数据。
这个数据excel插件反而读取不了,等找到一个大家都能读的数据集再测。

结论,xlsx文件格式太复杂,数据类型繁多,做到兼容很难。

http://www.lryc.cn/news/618976.html

相关文章:

  • 【SpringBoot】MyBatis 动态 sql
  • 如何应对CAN总线冲突和数据丢包
  • 【c++深入系列】:万字详解模版(下)
  • 【项目设计】高并发内存池
  • AI赋能IT服务管理:从被动响应到智能驱动的跃迁
  • Linux驱动开发probe字符设备的完整创建流程
  • 【前端八股文面试题】【JavaScript篇7】什么是JavaScript的原型、原型链? 有什么特点
  • JavaScript Array.prototype.flatMap ():数组 “扁平化 + 映射” 的高效组合拳
  • 无人机三维路径规划
  • 2020/12 JLPT听力原文 问题一 4番
  • MyBatis-Plus——SQL注入器
  • LintCode第1526-N叉树的前序遍历
  • RabbitMQ面试精讲 Day 20:RabbitMQ压测与性能评估
  • 【游戏优化笔记】开发中如何减少建筑和树木等环境元素的资源消耗?
  • 行业热点丨智能仿真时代:电子工程多物理场解决方案创新实践
  • 【盘古100Pro+开发板实验例程】FPGA学习 | 中值滤波 | 图像实验指导手册
  • Redis知识点+项目+面试八股
  • redis认识缓存击穿
  • Flutter UI Kits by Olayemi Garuba:免费开源的高质量UI组件库
  • Element用法---Loading 加载
  • React 腾讯面试手写题
  • Photoshop软件打开WebP文件格的操作教程
  • 第六十四章:AI的“觅食”之路:数据采集器设计与多源数据获取
  • Android性能优化:架构层面的性能考量
  • Android 引导式访问(屏幕固定 Screen Pinning)完整指南
  • CPPIO流
  • 北京JAVA基础面试30天打卡08
  • 信号反射规律
  • [激光原理与应用-254]:理论 - 几何光学 - 自动对焦的原理
  • W5500之“socket.c”中的相关函数