---
title: "Loading Parquet data into MySQL with ClickHouse"
description: "The post demonstrates how to move Parquet data into MySQL and query the resulting table using ClickHouse table functions. It sets up MySQL 8.4 in Docker, runs clickhouse-local with a configuration file and named collection, and inspects StackOverflow votes stored in a 2024 Parquet file on S3. An INSERT INTO FUNCTION mysql statement loads the file into a MySQL InnoDB table with 12,296,977 rows, while subsequent examples query MySQL from ClickHouse using either translated ClickHouse syntax or an opaque MySQL SQL string. The post also shows named-collection credentials and a query that identifies posts with both upvotes and downvotes, returning ten ranked results. It concludes that this workflow stays within ClickHouse and notes that table functions also support Postgres, SQLite, and MongoDB."
---

# Loading Parquet data into MySQL with ClickHouse

[Clickhouse](https://yomu.fyi/company/clickhouse) · Sep 10, 2026

**Type:** Tutorial

## Summary

The post demonstrates how to move Parquet data into MySQL and query the resulting table using ClickHouse table functions. It sets up MySQL 8.4 in Docker, runs clickhouse-local with a configuration file and named collection, and inspects StackOverflow votes stored in a 2024 Parquet file on S3. An INSERT INTO FUNCTION mysql statement loads the file into a MySQL InnoDB table with 12,296,977 rows, while subsequent examples query MySQL from ClickHouse using either translated ClickHouse syntax or an opaque MySQL SQL string. The post also shows named-collection credentials and a query that identifies posts with both upvotes and downvotes, returning ten ranked results. It concludes that this workflow stays within ClickHouse and notes that table functions also support Postgres, SQLite, and MongoDB.

## Context

The author needed to get data from Parquet files into MySQL while working on a video for the MySQL CDC connector for ClickPipes. The post uses local MySQL to make the workflow easier to reproduce and notes that MySQL has no native way to load the Parquet data.

## Approach / What changed

The workflow runs MySQL 8.4 in Docker and ClickHouse from its binary, describes a StackOverflow votes Parquet file through the url table function, creates a matching MySQL table, and inserts the file contents through the mysql table function. It then queries MySQL from ClickHouse using translated ClickHouse syntax, direct MySQL SQL, and a configured named collection.

## Takeaways

- The url table function reads the 2024 StackOverflow votes Parquet file from S3 and exposes fields including Id, PostId, VoteTypeId, CreationDate, UserId, and BountyAmount.
- The mysql table function can insert selected Parquet columns into MySQL and can also execute queries against the resulting MySQL table from ClickHouse.
- Queries passed as ClickHouse expressions are translated before execution, while SQL supplied through query() is sent as an opaque MySQL query and must use MySQL-compatible syntax.

**Tags:** [ClickHouse](https://yomu.fyi/topic/clickhouse), [MySQL](https://yomu.fyi/topic/mysql), [Parquet](https://yomu.fyi/topic/parquet)

- Source: [Clickhouse](https://clickhouse.com/blog/parquet-to-mysql-with-clickhouse)
- Source URL: https://clickhouse.com/blog/parquet-to-mysql-with-clickhouse
- Ingested by Yomu: 2026-09-11T16:02:53.752Z

[Read original post](https://clickhouse.com/blog/parquet-to-mysql-with-clickhouse)
