You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将csv.gz插入ClickHouse的test_table?Python客户端执行报错求助

问题原因与解决方法

错误原因

你使用的FROM INFILE是ClickHouse原生命令行客户端(clickhouse-client)的本地文件导入语法,无法通过clickhouse_connect依赖的HTTP接口执行:

  1. Docker容器内的ClickHouse服务器无法直接访问你本地机器的data.csv.gz文件;
  2. HTTP接口不支持FROM INFILE这类依赖客户端本地文件的查询语法,因此返回UNKNOWN_TYPE_OF_QUERY错误。

解决方法

方法一:使用clickhouse_connect内置的insert_file方法(推荐)

clickhouse_connect专门提供了insert_file方法处理本地文件导入,支持自动上传文件、识别压缩格式,代码更简洁:

import clickhouse_connect

# 初始化客户端
client = clickhouse_connect.get_client(host='localhost', port=18123)
# 直接导入本地压缩CSV文件
client.insert_file(
    file_path='data.csv.gz',
    table='test_table',
    format='CSV',
    compression='gzip'
)

方法二:读取文件内容后通过HTTP接口提交

如果更习惯SQL语法,可以手动读取本地压缩文件的内容,再通过command方法提交:

import clickhouse_connect
import gzip

client = clickhouse_connect.get_client(host='localhost', port=18123)
# 读取本地gzip压缩的CSV文件内容
with gzip.open('data.csv.gz', 'rt', encoding='utf-8') as f:
    csv_content = f.read()
# 执行INSERT语句并传入文件内容
client.command("INSERT INTO test_table FORMAT CSV", data=csv_content)

内容的提问来源于stack exchange,提问作者MoneyBall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 16:27:24