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

Python连接ClickHouse失败排查:端口查询及代码问题分析

ClickHouse连接失败及代码问题排查

一、查看ClickHouse端口的方法

  • 查看配置文件:打开ClickHouse服务器的主配置文件(通常路径为/etc/clickhouse-server/config.xml),搜索以下标签获取对应端口:
    • <http_port>:HTTP协议端口,默认8123
    • <tcp_port>:TCP协议端口,默认9000(clickhouse_driver默认使用此端口)
    • <interserver_http_port>:集群节点间通信端口,默认9009
  • 命令行查看监听端口:在ClickHouse服务器上执行以下命令,直接查看正在运行的ClickHouse进程监听的端口:
    netstat -tulpn | grep clickhouse
    # 或用ss命令(更现代)
    ss -tulpn | grep clickhouse
    
  • 通过ClickHouse客户端查询:如果能本地连接ClickHouse,执行SQL查询获取端口配置:
    SELECT name, value FROM system.settings WHERE name IN ('http_port', 'tcp_port');
    

二、代码中的问题分析与修复

1. 连接参数错误

  • Host参数错误:代码中host='user'是错误的,这里应该填写ClickHouse服务器的IP地址或主机名,比如本地运行填'localhost',远程服务器填对应IP(如'192.168.1.100')。
  • 端口与协议不匹配:clickhouse_driver默认使用TCP协议(对应端口9000),如果要连接8123(HTTP端口),必须显式指定协议:
    client = Client(host='正确的服务器地址', port=8123, protocol='http')
    
    如果用默认TCP协议,端口应改为9000(若未修改过配置):
    client = Client(host='正确的服务器地址', port=9000)
    

2. 数据插入问题

  • 表名拼写错误:代码中INSERT INTO custmer VALUES的表名custmer应为customer(与CSV文件名customer_df.csv对应,大概率是拼写失误)。
  • 逐行插入效率极低:循环逐行插入会产生大量网络请求,建议批量读取数据后一次性插入:
    from clickhouse_driver import Client
    import csv
    
    # 修复连接参数
    client = Client(host='localhost', port=9000)
    
    with open('/home/user/Desktop/customer_df.csv') as csvfile:
        reader = csv.reader(csvfile)
        next(reader)  # 跳过表头(如果CSV有表头的话)
        data = list(reader)  # 批量读取所有数据
        client.execute('INSERT INTO customer VALUES', data)  # 一次性插入
    
  • 未处理表头:若CSV文件第一行是表头,直接插入会导致数据类型不匹配,需用next(reader)跳过表头行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:05:16