DuckDB 多数据源交互

DuckDB 是嵌入式数据库,DuckDB 的优势是可以访问多种类型,从数据库到文件,基本上所有的结构化数据都支持。DuckDB 可以使用不同语言的 SDK 、或者命令行进行访问,本文将使用命令行进行访问,将 Excel 的数据写入 MySQL 数据库。

安装

在 Mac 使用 brew install duckdb ,其他平台安装方法,参考官方文档

连接 Excel

进入 DuckDB 命令行界面,命令行直接输入 duckdb

#安装 Excel 插件
INSTALL spatial;
LOAD spatial;

# 访问数据
SELECT * FROM st_read('mid_comp.xlsx');

# 创建表
CREATE TABLE mid_comp AS
    SELECT * FROM st_read('mid_comp.xlsx');

创建 MySQL 连接

INSTALL mysql;
LOAD mysql;

#连接信息

CREATE SECRET (
    TYPE MYSQL,
    HOST '127.0.0.1',
    PORT 13306,
    DATABASE db_jq,
    USER 'root',
    PASSWORD '123456'
);

# 创建数据源
ATTACH '' AS mysql_db (TYPE MYSQL);

# excel 数据
 use mysql_db.db_jq;
 CREATE TABLE mid_comp AS
      SELECT * FROM st_read('mid_comp.xlsx');

在这里插入图片描述
数据已经成功到处 MySQL

总结

有了 DuckDB 跨数据源的数据处理变得非常简单,更多的数据源连接方式可以参考官网。

### DuckDB C++ 库的使用方法 DuckDB 是一种嵌入式的SQL数据库管理系统,支持多种编程语言接口,其中包括C++。为了在项目中集成并使用DuckDB C++库,通常需要完成以下几个方面的工作: #### 安装依赖项与获取源码 对于希望从头构建环境的情况,可以通过Git克隆官方仓库来获得最新版本的DuckDB源代码[^4]。 ```bash git clone https://github.com/duckdb/duckdb.git ``` #### 构建过程配置 当涉及到具体项目的编译时,推荐采用`CMake`作为跨平台的构建工具。这不仅简化了不同操作系统间的移植工作,还允许更灵活地管理第三方依赖关系以及优化选项设置。针对观察到的不同编译器产生的二进制文件体积差异现象,在实际操作过程中可以尝试调整链接阶段所引入静态库的数量以控制最终产物大小[^2]。 #### 初始化连接实例 下面给出了一段简单的示例程序用于展示如何创建一个新的DuckDB数据库连接对象,并执行基本查询命令: ```cpp #include "duckdb.hpp" using namespace duckdb; int main(int argc, char *argv[]) { try { // 创建新的内存中的数据库实例 unique_ptr<DuckDB> db(DuckDB::Open(":memory:")); // 开启新事务 Connection con(*db); // 执行DDL语句创建表结构 con.Query("CREATE TABLE integers(i INTEGER);"); // 插入测试数据记录 con.Query("INSERT INTO integers VALUES (42), (87);"); // 查询刚刚插入的数据集 auto result = con.Query("SELECT i FROM integers ORDER BY i;"); // 输出结果至标准输出流 while(result->Next()) { printf("%d\n", result->GetValue<int>(0)); } } catch (...) { fprintf(stderr,"An error occurred during execution.\n"); return EXIT_FAILURE; } return EXIT_SUCCESS; } ``` 此代码片段展示了通过调用`DuckDB::Open()`函数打开指定路径下的持久化存储文件(此处为`:memory:`表示仅存在于运行期间),之后利用`Connection`类来进行各类SQL指令交互[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值