
数据库
文章平均质量分 57
l1t
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
多种单文件版分析型数据库调用底层函数对比
本文分析了五种数据库系统(duckdb、glaredb、cedardb、clickhouse、datafusion-cli)的导入函数情况。通过提取各系统的未定义符号(U)并统计发现:clickhouse导入函数最多(533个),glaredb最少(159个)。52个函数被所有系统共享。所有系统都使用了内存映射函数(munmap),而setvbuf仅被duckdb、cedardb和clickhouse使用。比较结果显示,cedardb与clickhouse共享函数最多(291个)原创 2025-08-03 11:00:18 · 416 阅读 · 0 评论 -
另外几种语言挑战100万行字符串文本排序
文章摘要:张泽鹏先生实现了三种语言的文本行排序程序:JavaScript(4.455s)、Rust(2.333s)和Zig(3.748s)。其中Rust版本性能最优,使用了缓冲读写和快速排序。Deepseek还提供了C语言实现思路,通过预分配内存、记录行偏移并使用qsort优化性能。测试显示Rust比Node.js快约47%,体现了不同语言在文件处理性能上的差异。(149字)原创 2025-07-31 20:30:15 · 365 阅读 · 0 评论 -
100万行随机字符串文本文件采用不同语言排序比较
本文比较了三种编程语言(C、Python、Zig)对文本文件进行排序的性能。张泽鹏先生提供了C和Python的实现,DeepSeek编写了Zig版本。测试使用一个100万行随机生成的文本文件,结果显示C语言版本最快(0.944s),Python次之(1.769s)。C语言通过内存映射和qsort实现高效处理,Python则使用内置sorted函数。文章展示了不同语言处理文本排序的技术实现和性能差异。原创 2025-07-31 15:11:25 · 223 阅读 · 0 评论 -
在Linux上使用DuckCP实现从csv文件汇总数据到SQLite数据库的表
本文记录了在Python环境中安装和使用DuckCP ETL工具的过程。首先通过修改wheel文件使其支持Python 3.11.2,使用Python脚本重新压缩安装包并成功安装。创建元数据库时遇到Python版本兼容问题,改用3.13.1后解决。在配置数据源和目标存储库时:1)创建文件仓库作为TSV数据源;2)正确配置SQLite目标数据库路径需要明确指定完整文件路径而非目录。最后强调需预先手工创建SQLite数据库和表结构,并创建必要的存储单元。整个过程展示了版本兼容性和配置细节对ETL工具使用的重要性原创 2025-07-28 19:25:00 · 442 阅读 · 0 评论 -
开源嵌入式数组引擎TileDB的简单使用
TileDB是一个C++编写的多维数组存储引擎,支持多种后端存储。安装时可从GitHub下载预编译库(2.28.1版本)或源码编译。编译示例程序(as_built.c、query_condition_dense.c)需指定头文件和库路径,并注意GCC版本兼容性。示例展示了数组条件查询功能,类似数据库操作,支持空值、字符串比较、数值范围等条件过滤。使用时需设置LD_LIBRARY_PATH环境变量指向TileDB库路径。原创 2025-07-28 08:52:23 · 264 阅读 · 0 评论 -
利用DeepSeek解决kdb+x进行tpch测试的几个问题及使用感受
摘要:本文解决了在kdb+中导入TPCH数据库时遇到的三个关键问题:1)数据类型匹配问题,详细说明了基本数据类型及正确的导入语法;2)数据库嵌套目录问题,指出正确保存路径应为当前数据库目录;3)分区表存储优化,提供并行处理(peach)和按月批量写入的方案以提升性能。原创 2025-07-26 19:24:47 · 1235 阅读 · 0 评论 -
利用DeepSeek测试kdb+x的tpch sf=10数据
本文详细介绍了如何在kdb+/q数据库中进行TPC-H基准测试。内容涵盖:1)准备工作,包括下载TPC-H工具包并生成测试数据;2)两种建表方案:非分区表和按日期分区的优化表结构;3)数据导入方法,包括批量加载和分区加载;4)查询性能对比测试,提供了SQL和q语言两种实现方式(如Q1和Q3查询),并展示了查询计时方法。重点强调了分区策略、索引优化等性能提升手段,以及两种查询语言的语法差异和执行效率比较。原创 2025-07-25 20:02:40 · 1109 阅读 · 0 评论 -
在kdb+x中使用SQL
本文介绍了Kx Systems新发布的kdb+x产品的安装与SQL使用方式。安装需登录官网获取动态下载链接,离线安装时需修改脚本跳过验证步骤。SQL支持两种执行方式:1)在q命令行中通过s)前缀执行SQL语句;2)通过Python的pykx包执行,支持变量占位符语法。文中详细演示了两种环境下的建表、插入和查询操作,并提供了2000万行时间序列数据的处理示例。Python环境下需安装pykx包,建议使用清华源加速安装。原创 2025-07-25 14:45:02 · 476 阅读 · 0 评论 -
利用DeepSeek实现调用libchdb.so动态连接库中的未公开导出函数
本文介绍了两种调用动态链接库中导出函数的方法。方法一使用dlopen/dlsym动态加载符号,通过显式加载库文件并逐个检查函数指针,适用于运行时动态调用;方法二采用静态链接方式,直接声明外部函数,需确保函数已在库中导出。示例代码演示了这两种方法调用BIGNUM数学运算函数的过程,包括数值转换、加法乘法运算等操作。动态加载方式需要进行错误检查,而静态链接方式更简洁但需保证函数可用性。两种方法各有利弊,可根据实际需求选择适合的调用方式。原创 2025-07-19 19:05:01 · 422 阅读 · 0 评论 -
借助DeepSeek查看动态链接库的导出函数
这篇文章探讨了如何挖掘动态链接库中未公开的函数接口。作者首先通过头文件发现仅公开了28个函数,而500MB的libchdb.so可能包含更多功能。随后尝试使用nm、objdump等工具分析动态库导出的函数符号,发现大量Rust编译器生成的带哈希后缀的函数名(如num_bigint::biguint::shift::biguint_shl2::h79dc2a6c64f30890)。通过rustfilt工具可以解析这些符号的可读路径,但直接调用仍需依赖extern "C"接口或官方文档。原创 2025-07-19 09:39:08 · 1023 阅读 · 0 评论 -
利用DeepSeek为chdb命令行客户端添加输出重定向和执行SQL脚本功能
摘要:该代码实现了一个ChDB客户端类,支持CSV数据格式处理和输出重定向功能。主要特点包括:1) 禁用重定向时的CSV表格输出和统计/计时信息;2) 提供多种格式别名映射(CSV/JSON/Markdown等);3) 实现表格数据的智能显示(自动截断长数据并显示首尾行);4) 支持CSV数据解析和表头提取;5) 包含文件输出流管理功能。代码通过格式化输出和行列计算实现了优雅的数据展示,同时处理了引号转义等CSV解析细节。原创 2025-07-15 22:03:39 · 156 阅读 · 0 评论 -
借助DeepSeek编写输出漂亮表格的chdb客户端
chdb是ClickHouse的嵌入式引擎,支持Python、Rust和C/C++调用。本文介绍了如何用C++实现一个支持表格输出和交互式查询的客户端。关键功能包括:1) 表格格式化输出(自动处理超长结果);2) 计时开关(.timer);3) 多种输出格式支持(通过别名映射);4) 错误处理。实现要点包括:使用chdb_query执行查询,通过CSVWithNames格式获取表头,动态计算列宽,以及结果分页显示。程序结构采用ChDBClient类封装核心功能,包括查询执行、结果处理和用户交互。原创 2025-07-14 21:38:20 · 354 阅读 · 0 评论 -
duckdb和pyarrow读写arrow格式的方法
Arrow格式被广泛用于数据分析工具中。DuckDB从1.3版本后将Arrow插件从核心插件改为社区插件(现名nanoarrow)。实验表明:1) DuckDB生成的Arrow文件需先加载插件才能正确写入;2) PyArrow无法读取DuckDB生成的Arrow文件,但生成的Arrow文件能被DuckDB读取;3) PyArrow读写Arrow文件时数据结构会发生变化(Int64Array变为ChunkedArray),而Feather格式则保持结构一致。这揭示了不同工具对Arrow格式的实现存在兼容性问题原创 2025-07-13 19:44:16 · 413 阅读 · 0 评论 -
使用 duckdb::arrow 实现表格输出的 DuckDB CLI 代码
摘要:通过在duckdb-rs主页发现支持Arrow表格的示例代码,将其提交给DeepSeek并删除语法高亮后,成功实现了能正确处理各种查询的DuckDB CLI工具。该工具支持两种模式:管道输入模式和交互模式,使用Arrow格式输出查询结果并显示执行时间。测试表明它能够正常处理数值查询、范围查询以及表创建/插入等操作,执行时间在毫秒级别。原创 2025-07-08 22:06:19 · 329 阅读 · 0 评论 -
利用DeepSeek实现rust调用duckdb动态链接库的duckdb CLI
这是一个使用Rust实现的DuckDB命令行工具,主要特点包括: 支持两种模式: 管道模式:从stdin读取SQL并执行 交互模式:带语法高亮的REPL环境 核心功能: 使用duckdb-rs库连接DuckDB内存数据库 通过syntect实现SQL语法高亮 提供查询执行时间统计 支持命令行历史记录 当前限制: 结果输出仅支持String类型,其他类型需要转换 SQLHelper的高亮功能尚未完全集成到REPL中 项目依赖duckdb、syntect、atty和rustyline等库,实现了基本的数据库查询原创 2025-07-08 16:09:44 · 284 阅读 · 0 评论 -
12行脚本实现duckdb自动完成tpch测试
摘要:本文介绍通过DuckDB的TPCH插件自动生成和执行TPCH查询的方法。首先使用tpch_queries()函数将前3条查询SQL输出到qs.txt文件,然后读取该文件执行查询并将结果保存到res.txt。脚本包含数据生成(0.3比例)、查询输出和计时功能。可通过命令行管道或DuckDB交互模式执行脚本,输出结果显示各查询的执行时间(约0.01-0.014秒)。该方法实现了TPCH基准测试的自动化执行和性能测量。原创 2025-07-06 10:19:11 · 237 阅读 · 0 评论 -
在sf=0.1时测试fireducks、duckdb、polars的tpch
文章摘要:本文介绍了使用fireducks工具运行TPC-H基准测试的完整流程。首先从GitHub下载源代码并解压,通过设置SCALE_FACTOR=0.1运行脚本,该脚本会自动安装依赖包、编译数据生成器、生成测试数据并转换为parquet格式。测试结果显示fireducks完成22个查询总耗时130.8秒,各查询响应时间在0.11-0.52秒之间。与DuckDB(88.98秒)和Polars(61.85秒)的对比测试表明性能差异显著,其中单个查询速度差异达10倍,但直接使用DuckDB测试却显示更快结果,原创 2025-07-05 20:45:54 · 297 阅读 · 0 评论 -
在databend python模块中测试tpch
本文介绍了在databend python模块中测试tpch的步骤和脚本,供参考。原创 2025-07-05 13:06:49 · 336 阅读 · 0 评论 -
使用datafusion和tpchgen-rs进行完整的TPCH 22个查询的基准测试
摘要:本文介绍了DataFusion基准测试的完整流程。首先从源码编译bench二进制文件,遇到资源不足时可使用单任务编译模式。然后使用高效工具tpchgen-rs生成parquet格式的TPCH测试数据(SF3规模仅需6.5秒),并按要求组织文件目录结构。最后执行TPCH测试,给出各查询的平均执行时间(如Q1平均1359.65ms,Q22平均175.32ms)。测试需注意工作目录和参数设置,详细步骤可参考相关文档。原创 2025-06-28 19:34:36 · 178 阅读 · 0 评论 -
DeepSeek改写glaredb的示例实现自定义CLI界面程序
本文记录了在Rust项目中集成GlareDB过程中遇到的问题及解决方案。首先尝试编译时因缺少protoc工具失败,下载正确的protoc版本并设置PATH后解决。随后在添加CLI界面时遇到tokio模块未解析和SingleUserEngine泛型参数缺失的错误,通过将代码直接放入main函数规避了这些问题。最终成功构建了一个包含基本CLI功能的数据库引擎,支持SQL查询执行和结果展示。整个过程展示了Rust项目依赖管理和编译问题的典型解决思路。原创 2025-06-28 13:23:01 · 411 阅读 · 0 评论 -
2025年6月在几种单机版数据库上测试TPCH
本文对比测试了DuckDB、GlareDB、ClickHouse和DataFusion-CLI四个数据库对TPCH数据集的查询性能。测试使用tpchgen-rs工具生成4GB规模的Parquet格式数据,包含8张表。重点对比了两个典型SQL查询的执行结果和耗时:查询1实现分组聚合统计,DuckDB耗时1.596秒;查询3涉及多表关联和复杂计算。测试过程中发现Databend和CedarDB因操作复杂或功能限制未能参与最终测试,为后续研究提供了方向。原创 2025-06-27 16:54:40 · 301 阅读 · 0 评论 -
利用DeepSeek编写的Datafusion自定义表函数read_csv和read_xls
本文介绍了如何在Rust的Datafusion中实现自定义函数。作者通过Docker搭建Rust环境,参考官方指南和DeepSeek辅助,添加了支持多种字符集的read_csv和read_xls表函数。重点描述了版本依赖问题的解决过程:初始编译因版本不匹配失败,通过调整Cargo.toml中datafusion(48.0)、arrow(55.1)等依赖版本后成功。文中提供了最终可用的Cargo配置和read_csv、read_xls函数实现代码,展示了如何读取不同编码的CSV文件、xlsx文件并以表格输出原创 2025-06-25 13:45:24 · 442 阅读 · 0 评论 -
几种单机版数据库CLI界面的对比
标题:五大数据分析引擎对比 摘要:本文直观展示了五种主流数据分析引擎的命令行界面,包括GlareDB、ClickHouse、Polars、DuckDB和DataFusion。原创 2025-06-24 21:12:55 · 133 阅读 · 0 评论 -
将扩展的DuckDB自定义函数整合到一个程序
本文介绍了如何将多个基于DeepSeek开发的DuckDB扩展功能整合到一个交互式程序中。作者此前开发了支持高精度运算、读取PostgreSQL表、处理中文字符CSV/XLS等功能,但分散在不同程序中。通过将各功能模块的cpp文件包含到主程序,并统一注册表函数,实现了功能整合。为解决命名冲突,修改了部分代码结构。编译时链接了相关库(如xlslib、minidocx等),最终生成单一可执行文件。通过对比官方DuckDB的函数列表,可验证新增功能的正确性。这种整合提高了开发效率和使用便利性。原创 2025-06-15 19:12:26 · 747 阅读 · 0 评论 -
使用DuckDB查询DeepSeek历史对话
本文介绍从DuckDB中查询DeepSeek历史对话的方法,包括如何显示方便观察以及如何限定条件原创 2025-06-14 20:54:51 · 447 阅读 · 0 评论 -
xlslib输出UTF8汉字的方法
本文介绍了如何修改xlslib开源库以支持输出UTF8中文Excel文件。主要步骤包括:1) 修正sheetrec.h中的ustring命名空间错误(从std改为xlslib_strings);2) 添加两个支持UTF8编码的重载label()函数;3) 使用std::wstring_convert转换器处理UTF8字符串与数字的混合输出。修改后需要通过宽字符串(L前缀)或字符串转换器(wstring_convert)正确输出中文,解决了原输出乱码问题。文章存有原始解决方案,包含sheetrec.h/cpp原创 2025-06-14 14:36:54 · 287 阅读 · 0 评论 -
利用DeepSeek将docx生成程序迁移至minidocx
本文介绍了从DuckX迁移到minidocx库的过程。minidocx无需模板文件即可直接生成docx文档,调用方式与DuckX类似但更简单。作者通过分析minidocx源码结构,直接使用g++编译成功,并借助示例代码验证了功能。随后将原有程序中的DuckX调用替换为minidocx接口,修改了DOCXGlobalState结构体及相关函数实现,最后调整编译命令完成迁移。新方案成功实现了docx文档的生成功能,解决了原有方案需要预置模板文件的不便问题。原创 2025-06-13 09:28:09 · 277 阅读 · 0 评论 -
DeepSeek辅助编写的将DuckDB查询结果写多种格式文件的通用类
本文介绍了一个通用数据导出框架的开发过程,用于将DuckDB数据库查询结果导出为多种格式(XLS/DOCX等)。作者基于CSV导出实现进行了抽象,设计了可扩展的模板架构,通过添加特定格式的处理代码即可支持新格式。在实现DOCX导出功能时,遇到两个关键问题:(1) duckx库只能修改现有文件而不能创建新文件;(2) C++移动语义导致的文件路径失效问题。经过调试后成功实现功能,并总结了重要经验:使用CSV进行概念验证的重要性,以及正确处理C++移动语义的注意事项。最终方案允许通过文件后缀自动选择相应的导出工原创 2025-06-11 13:57:20 · 559 阅读 · 0 评论 -
DeepSeek辅助实现的DuckDB copy to自定义函数
摘要: 开发DuckDB自定义导出函数mycsv时,发现需注意两个关键点:1) InitializeGlobal仅处理表头,数据写入需通过InitializeLocal实现;2) 数据读取必须从DataChunk参数而非LocalFunctionData获取,否则字段值会为空。本程序通过插入myduck前缀区分系统CSV文件。原创 2025-06-09 22:05:47 · 557 阅读 · 0 评论 -
让DeepSeek参照libxls的xls2csv例子实现的DuckDB read_xls表函数
本文实现了DuckDB读取传统xls格式文件的表函数read_xls。通过整合libxls库的xls解析功能和DuckDB的增强CSV读取能力,该函数支持指定sheet编号或名称读取Excel文件。实现要点:1) 使用iconv进行字符编码转换;2) 通过xlsWorkSheet结构解析表格数据;3) 提供sheet参数选择功能;4) 自动推断列名和数据类型。测试表明该实现能正确处理中文字符。代码结构清晰,包含绑定、初始化和数据处理三个核心模块,为DuckDB扩展了传统Excel文件读取能力。原创 2025-06-08 13:50:35 · 424 阅读 · 0 评论 -
改写一行提速group by cube查询五倍
多组数据库测试表明,直接使用GROUP BY CUBE语句的效率往往低于等价改写方法。通过创建1亿行测试表,对比四种实现方式发现:直接使用GROUP BY CUBE耗时8秒;拆分为UNION ALL语句耗时3秒;先GROUP BY全部列再UNION ALL耗时1.3秒;而优化后的方法——先GROUP BY全部列再使用CUBE,仅需1.5秒且保留分组标识,实现了5倍性能提升。该方法在GlareDB中也获得验证,具有普适性。对于ROLLUP操作,由于组合较少,优化效果相对不明显。原创 2025-06-08 08:02:30 · 377 阅读 · 0 评论 -
一个DeepSeek辅助编写的将group by cube查询语句转为等价CTE的程序
该程序实现了将SQL中的GROUP BY CUBE查询转换为等价的UNION ALL多组CTE查询。主要功能包括:预处理输入SQL、提取CUBE列清单、生成所有可能的组合(2^n-1种)、处理列别名解析,最终将原始查询重写为包含多个CTE查询的UNION ALL语句。程序采用正则表达式匹配GROUP BY CUBE模式,并支持复杂的列表达式解析,确保了查询转换的准确性和完整性。原创 2025-06-08 07:58:37 · 113 阅读 · 0 评论 -
三种读写传统xls格式文件开源库libxls、xlslib、BasicExcel的比较
本文介绍三种读写传统xls格式文件开源库libxls、xlslib、BasicExcel的安装、使用方法,并比较其功能与性能,提供了测试源代码和编译命令行,并解决了不同库同名类型定义的冲突原创 2025-06-06 19:36:28 · 1706 阅读 · 0 评论 -
在aarch64平台编译写入传统xls格式文件开源库xlslib的步骤
摘要:在aarch64平台编译旧版xlslib库时遇到系统类型识别问题,通过替换新的config.guess和config.sub文件解决configure错误。虽然make时出现链接错误,但成功生成所需的libxls.so动态库文件。测试程序testCPP能正常运行并生成xls文件,将该so库用于新编写的C++14程序也成功完成xls文件输出。值得注意的是,该库虽用g++5.4编译,但与g++14编译的程序兼容。原创 2025-06-06 10:57:37 · 255 阅读 · 0 评论 -
在aarch64平台编译依赖pqxx库和iconv库的c++程序的办法
本文介绍了一个从下载软件包中提取lib和include目录用于c++程序编译的方法,适用于在线安装和和从源代码编译失败的情况原创 2025-06-04 12:28:38 · 364 阅读 · 0 评论 -
使用DeepSeek编写DuckDB支持中文字符集编码的read_csv表函数
本文介绍了一个解决DuckDB不支持指定CSV文件字符集问题的方案。通过实现read_csv_e表函数,支持读取GBK、GB2312、GB18030和BIG5编码的CSV文件,并将其转换为UTF-8存储。该方案使用iconv库进行字符编码转换,包含文件读取、编码转换和数据绑定等功能,避免了用户使用命令行工具预处理文件的不便。源码提供了完整的C++实现,包括头文件和源文件,展示了如何通过DuckDB的TableFunction接口扩展功能。原创 2025-06-02 11:57:01 · 412 阅读 · 0 评论 -
Debian上安装PostgreSQL的故障和排除
摘要:用户在使用apt install postgresql安装PostgreSQL 15时遇到404错误,尝试--fix-missing仍无效。自行下载相近版本安装包(15.13)后,又出现依赖版本不匹配(libpq5需要15.13而系统为15.12)。解决依赖后启动服务时发现缺少配置文件,手动创建postgresql.conf和pg_hba.conf文件(配置本地连接为trust模式)后成功启动。通过psql和DuckDB测试连接正常。问题根源可能是未执行apt-get update更新软件源信息。原创 2025-06-01 19:01:52 · 487 阅读 · 0 评论 -
利用DeepSeek编写能在DuckDB中读PostgreSQL表的表函数
本文介绍了如何利用DeepSeek编写DuckDB表函数read_pg(),实现从PostgreSQL中读取数据。该表函数接受PostgreSQL连接字符串和表名作为参数,通过pqxx库查询表结构并映射数据类型,最终在DuckDB中返回对应表的数据。文章重点解决了函数重复调用的问题,并分享了表函数注册的技巧。通过这个表函数,用户可以在单个SQL查询中关联PostgreSQL的多个表。原创 2025-06-01 18:56:32 · 569 阅读 · 0 评论 -
DeepSeek修改4行在duckdb自定义客户端中显示格式化表格结果
摘要: 本文纠正了先前关于DuckDB动态库缺乏格式化输出的错误观点,详细介绍了通过query_result.hpp中的ToBox函数实现表格化输出的方法。内容包括:1) 必要头文件引入;2) 查询执行代码改造步骤;3) BoxRendererConfig配置选项说明;4) 完整集成示例。文章同时指出:当前版本(≥0.6.0)的边框配置参数已变更,且实际输出包含数据类型行,通过字符串处理可调整格式。另提及脚本读取换行符问题的解决方案。最终输出效果接近DuckDB CLI的表格样式(示例展示)。原创 2025-05-31 07:19:00 · 361 阅读 · 0 评论 -
deepseek辅助编写的支持gmp高精度运算duckdb客户端
文章摘要:为解决DuckDB Decimal类型精度不足问题,通过自定义标量函数(UDF)和聚合函数(UDAF)调用GMP库实现高精度运算。开发过程中遇到函数实现、字符串转换等挑战,借助DeepSeek生成代码并解决编译错误。最终整合了支持加减乘除、开方等运算的交互式SQL工具,包含计时、脚本执行等功能。项目展示了AI对特定数据库系统的深入理解及DuckDB强大的扩展能力,但插件签名机制仍需进一步研究。相关代码已开源。原创 2025-05-28 21:17:09 · 759 阅读 · 0 评论