---
url: /duckdb/like-dw.md
description: 类似于数仓，如何用DuckDB直接连数据库
---

# DuckDB直接连接Mysql数据库

## 前言

在实际工作中，经常会是这样的情况，我们有些数据在CSV文件里面，有一些数据可能有以Parquet格式保存，还有数据是在Mysql数据库里面。当我们想要结合起来做分析的时候就会很麻烦。

通常的做法会是搭建数仓，各类型数据都同步到数仓就可以统一使用了。这确实是很多企业的做法，但是对于个人分析或者数据量并没有那么多的情况下，我们该如何做分析呢？

答案就是DuckDB。

前面我们已经介绍了DuckDB对CSV和Parquet的使用，本文我讲为大家介绍如何用DuckDB直接连数据库。

## DuckDB连接Mysql数据库

1. 安装Mysql扩展

```sql
INSTALL mysql;
```

![](/img/65041184-abd9-4b70-ad72-bc6db68e89de.png)

2. 连接数据库

```sql
ATTACH 'host=localhost user=root port=3306 database=appdb password=123456' AS mysqldb (TYPE MYSQL);
```

![](/img/3880fa7a-c31c-4ed9-8550-3df00d014680.png)

mysql数据库请自行创建并插入数据，此处不再赘述。

3. 切换数据库

```sql
use mysqldb;
```

![](/img/1c49e6fa-3f25-47e9-bc50-4b92f2f3260f.png)

4. 查询数据

```sql
select * from mysqldb.goods;
```

![](/img/a46a786c-2000-4853-8ae3-57d519104e44.png)

5. 聚合查询

```sql
select count(*), sum(tp) from mysqldb.goods;
```

![](/img/04af92c9-5941-4933-9778-29092d1a5750.png)

至此，使用DuckDB查询Mysql的数据就完成了。不知道你有没有觉得很神奇。除了查询数据，还可以实现写数据，大家有兴趣的可以自行实践。

想要学习DuckDB更多玩法，请关注：遇码，回复**duckdb**，获取官方文档。
