duckdb导出Excel和导出CSV速度测试

运行duckdb数据库

D:>duckdb
v1.2.0 5f5512b827
Enter “.help” for usage hints.
Connected to a transient in-memory database.
Use “.open FILENAME” to reopen on a persistent database.

生成模拟数据,10个列,100万行数据;

-- 步骤1:创建生成模拟数据的视图
CREATE OR REPLACE VIEW test_data_view AS
SELECT 
  -- 生成自增ID
  CAST(generate_series AS INTEGER) AS id,
  
  -- 随机字符串(3个大写字母)
  (
    CHR((RANDOM() * 26 + 65)::INTEGER) || 
    CHR((RANDOM() * 26 + 65)::INTEGER) || 
    CHR((RANDOM() * 26 + 65)::INTEGER)
  ) AS code,
  
  -- 可变长度文本(5-10字符)
  SUBSTRING(
    REPLACE(RANDOM()::STRING, '0.', '') || 
    REPLACE(RANDOM()::STRING, '0.', ''),
    1, 5 + (RANDOM() * 5)::INTEGER
  ) AS dynamic_text,
  
  -- 数值类型
  ROUND(RANDOM() * 1000, 2) AS price,         -- 带2位小数的数值
  (RANDOM() * 10000)::INTEGER AS quantity,    -- 整数库存量
  RANDOM()::BOOLEAN AS is_available,          -- 布尔值
  
  -- 日期时间类型
  DATE '2024-01-01' AS fixed_date,            -- 固定日期
  CURRENT_TIMESTAMP AT TIME ZONE 'UTC' AS utc_created,  -- 当前UTC时间
  
  -- 组合类型
  MAP(ARRAY['A', 'B', 'C'], 
      ARRAY[RANDOM(), RANDOM(), RANDOM()]) AS attributes,
  
  -- 生成范围约束数值(0-100)
  LEAST(GREATEST(RANDOM() * 120, 0), 100) AS constrained_value
  
FROM GENERATE_SERIES(1, 10000000);  -- 生成100万行测试数据

查看一下视图,发现实时随机生成100万行数据要3秒

在这里插入图片描述

所以又建一个t1表,复制这100万行数据

CREATE table t1 as select * from main.test_data_view;

基于T1表进行测试excel导出, 这样估计是最快的

1万行,用时0.4秒

5万行,用时2秒

10万行,用时4秒

20万行,用时8秒

100万行,用时35秒

D INSTALL excel;
100% ▕████████████████████████████████████████████████████████████▏
Run Time (s): real 33.381 user 13.625000 sys 0.093750
D LOAD excel;
Run Time (s): real 0.077 user 0.015625 sys 0.000000
D COPY t1 TO 'D:\100w.xlsx' WITH (FORMAT XLSX, HEADER TRUE);
100% ▕████████████████████████████████████████████████████████████▏
Run Time (s): real 34.868 user 26.968750 sys 0.062500
D COPY (SELECT * FROM t1 limit 10000 ) TO 'D:\test1w.xlsx' WITH (FORMAT XLSX, HEADER TRUE);
Run Time (s): real 0.386 user 0.640625 sys 0.000000
D COPY (SELECT * FROM t1 limit 50000 ) TO 'D:\test5w.xlsx' WITH (FORMAT XLSX, HEADER TRUE);
Run Time (s): real 1.825 user 1.390625 sys 0.015625
D COPY (SELECT * FROM t1 limit 100000 ) TO 'D:\test10w.xlsx' WITH (FORMAT XLSX, HEADER TRUE);
100% ▕████████████████████████████████████████████████████████████▏
Run Time (s): real 3.793 user 2.875000 sys 0.031250
D COPY (SELECT * FROM t1 limit 200000 ) TO 'D:\test20w.xlsx' WITH (FORMAT XLSX, HEADER TRUE);
100% ▕████████████████████████████████████████████████████████████▏
Run Time (s): real 7.815 user 12.984375 sys 0.031250
D COPY (SELECT * FROM t1 limit 500000 ) TO 'D:\test50w.xlsx' WITH (FORMAT XLSX, HEADER TRUE);
100% ▕████████████████████████████████████████████████████████████▏
Run Time (s): real 18.385 user 14.921875 sys 0.062500
D COPY (SELECT * FROM t1 limit 1000000 ) TO 'D:\test100w.xlsx' WITH (FORMAT XLSX, HEADER TRUE);
100% ▕████████████████████████████████████████████████████████████▏
Run Time (s): real 36.913 user 58.718750 sys 0.218750
D COPY t1 TO 'D:\test100w_2.xlsx' WITH (FORMAT XLSX, HEADER TRUE);
100% ▕████████████████████████████████████████████████████████████▏
Run Time (s): real 34.845 user 29.859375 sys 0.062500

在这里插入图片描述

在这里插入图片描述

导出CSV速度

1万行,0.05秒

10万行,0.4秒

50万行,1.2秒

100万行,3.2秒

D COPY (SELECT * FROM t1 limit   10000) TO 'D:\test1w.csv' (FORMAT CSV, HEADER);
Run Time (s): real 0.046 user 0.015625 sys 0.000000
D COPY (SELECT * FROM t1 limit  100000) TO 'D:\test10w.csv' (FORMAT CSV, HEADER);
Run Time (s): real 0.382 user 0.265625 sys 0.000000
D COPY (SELECT * FROM t1 limit  500000) TO 'D:\test50w.csv' (FORMAT CSV, HEADER);
Run Time (s): real 1.183 user 1.187500 sys 0.015625
D COPY (SELECT * FROM t1 limit 1000000) TO 'D:\test100w.csv' (FORMAT CSV, HEADER);
100% ▕████████████████████████████████████████████████████████████▏
Run Time (s): real 3.156 user 2.015625 sys 0.312500

在这里插入图片描述
在这里插入图片描述

最后也证明了猜测,从视图实时生成100万随机数据,再导出Excel差3秒,导出csv只差1.5秒

D select count(*) from test_data_view;
┌────────────────┐
│  count_star()  │
│     int64      │
├────────────────┤
│    1000000     │
│ (1.00 million) │
└────────────────┘
Run Time (s): real 0.007 user 0.000000 sys 0.000000
D COPY test_data_view TO 'D:\test100w_view.xlsx' WITH (FORMAT XLSX, HEADER TRUE);
100% ▕████████████████████████████████████████████████████████████▏
Run Time (s): real 37.115 user 27.640625 sys 0.093750
D COPY test_data_view TO 'D:\test100w_view.csv' (FORMAT CSV, HEADER);
100% ▕████████████████████████████████████████████████████████████▏
Run Time (s): real 4.641 user 3.656250 sys 0.140625

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/969489.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

k8s集群离线安装kuberay operator

1,安装方式 采用helm安装方式,首先下载对应的helm chart,这里采用v1.2.2版本,下载地址: https://github.com/ray-project/kuberay-helm/releases/tag/kuberay-operator-1.2.2 2,解压并修改镜像源 由于是在内网环境下搭建&#…

结构形模式---适配器模式

适配器模式是一种结构形模式,主要用于不同在两个互不兼容的类或者库之间增加一个转换。 适配器模式的实现由两种方式,一种是适配器对象,一种是适配器类。 适配器是对象是将第三方接口通过对象调用引入到适配器中。 适配器类是通过多继承将…

面向SDV的在环测试深度解析——概述篇

1.引言 在汽车行业迈向软件定义汽车(SDV)的进程中,传统的硬件在环(HIL)测试方案在面对新的技术架构和需求时逐渐显露出局限性。一方面,现代汽车的电子电气架构日益复杂,高性能计算(…

2025年智慧城市解决方案下载:AI-超脑中台,体系架构整体设计

2025年,随着人工智能、物联网、大数据等新兴技术的深度融合,智慧城市解决方案正迈向更高层次的智能化和协同化阶段。其中,AI-超脑中台作为核心架构的一部分,为城市智能化运行提供了强大支撑。 智慧城市最新解决方案,标…

LINUX常用命令学习

查看系统版本 使用hostnamectl命令检查。hostnamectl显示了CentOS的版本以及操作系统的相关信息,非常方便 设置linux机器别名称 hostnamectl set-hostname 机器别名 --static 华为云 centos 命令:lsb_release -a linux:cat /proc/version 查看进程路…

RK3588 Linux平台部署DeepSeek模型教程

更多内容可以加入Linux系统知识库套餐(教程+视频+答疑) 文章目录 一、下载rknn-llm 和 deepseek模型二、RKLLM-Toolkit 安装2.1 安装 miniforge3 工具2.2 下载 miniforge3 安装包2.3 安装 miniforge3 三、创建 RKLLM-Toolkit Cond…

Azure从0到1

我能用Azure做什么? Azure提供100多种服务,能够从在虚拟机上运行现有应用程序到探索新的软件范式,如智能机器人和混合现实。许多团队开始通过将现有应用程序移动到在Azure中运行的虚拟机(VM)来探索云。将现有应用程序迁移到虚拟机是一个良好的开端,但云不仅仅是运行虚拟…

智慧城市V4系统小程序源码独立版全插件全开源

智慧城市V4系统小程序源码:多城市代理同城信息服务的全域解决方案 在数字化浪潮的推动下,智慧城市已成为全球发展的核心战略。作为这一领域的革新者,智慧城市V4系统小程序源码凭借其多城市代理同城信息服务能力与多商家营销功能,…

JAVA-Lambda表达式(高质量)

要了解Lambda表达式,首先需要了解什么是函数式接口,函数式接口定义:一个接口有且只有一个抽象方法 。 一、函数式接口 1.FunctionalInterger 注意: 1. 如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口 2. 如果我们…

机器视觉--Halcon变量的创建与赋值

一、引言 在机器视觉领域,Halcon 作为一款强大且功能丰富的软件库,为开发者提供了广泛的工具和算子来处理各种复杂的视觉任务。而变量作为程序中存储和操作数据的基本单元,在 Halcon 编程中起着至关重要的作用。正确地创建和赋值变量是编写高…

优选驾考小程序

第2章 系统分析 2.1系统使用相关技术分析 2.1.1Java语言介绍 Java语言是一种分布式的简单的 开发语言,有很好的特征,在安全方面、性能方面等。非常适合在Internet环境中使用,也是目前企业级运用中最常用的一个编程语言,具有很大…

ubuntu 22.04 安装vsftpd服务

先决条件,确保你已经配置好了存储库。 安装vsftpd 为了方便实验,我已经切换到了root用户。 rootlocal:~# apt-get install vsftpd修改配置 配置文件在 /etc/vsftpd.conf rootlocal:~# grep -vE ^#|^$ /etc/vsftpd.conf listenNO listen_ipv6YES anonymou…

Uniapp 获取定位详解:从申请Key到实现定位功能

文章目录 前言一、申请定位所需的 Key1.1 注册高德开发者账号1.2 创建应用1.3 添加 Key 二、在 Uniapp 中配置定位功能2.1 引入高德地图 SDK2.2 获取定位权限 三、实现定位功能3.1 使用 uni.getLocation 获取位置3.2 处理定位失败的情况3.3 持续定位3.4 停止持续定位 四、总结 …

MATLAB电机四阶轨迹规划考虑jerk、Djerk

1、内容简介 略 126-可以交流、咨询、答疑 2、内容说明 略 在电机控制中,轨迹规划是一个重要的环节,它决定了电机如何从一个状态平滑地过渡到另一个状态。四阶轨迹规划考虑了位置、速度、加速度和加加速度(jerk),有…

输电杆塔沉降智能监测系统:如何用数据守护电网安全

产品别称:输电线路杆塔沉降在线监测装置、输电线路北斗杆塔沉降在线监测装置、杆塔地基沉降监测设备、输电杆塔沉降智能监测系统 产品型号:TLKS-PMG-BDS 一、产品概述: 在电力传输系统中,输电线路杆塔的稳定性和安全性至关重要。…

Windows搭建SVN本地服务器 + TortoiseSVN客户端

目录 一、SVN服务器搭建 二、TortoiseSVN客户端 一、SVN服务器搭建 注意:例如你已经安装Subversion,要将它卸载,因为VisualSVN会包含Subversion,确保不会发生冲突,可在Windows程序搜索Subversion 卸载它。 Apache…

harmonyOS的文件的增、删、读、写相关操作(fs/content)

注意: 操作harmonyOS的文件只能对app沙箱内的文件进行操作 牵扯到两个支持点: fs和content这两个API; 具体的操作方法看下图: 创建文件 //js 引入 import fs from "ohos.files.fs" import featureAbility from "ohos.ability.featureAbility"; // 上下…

人才画像如何助力企业 “看准人”、“看透人”

在当今竞争激烈的商业世界中,企业对于人才的需求愈发迫切。然而,如何在众多求职者中 “看准人”、“看透人”,挑选出真正适合企业的人才,却成为了许多企业面临的难题。而人才画像的出现,为企业提供了一把有力的武器。 …

LC-搜索二维矩阵II、相交链表、反转链表、回文链表、环形链表、环形链表ll

搜索二维矩阵II 方法:从右上角开始搜索 我们可以从矩阵的右上角开始进行搜索。如果当前元素 matrix[i][j] 等于 target,我们直接返回 true。如果 matrix[i][j] 大于 target,说明 target 只能出现在左边的列,所以我们将列指针向左…

Win11配置wsl、ubuntu、docker

系统要求 安装WSL。 开通虚拟化: 准备工作 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartwsl --set-default-versi…