python 通过csv插入数据到clickhouse

本文详细介绍了如何使用Python将CSV数据高效地插入到ClickHouse数据库中,包括连接ClickHouse、读取CSV文件、数据格式转换以及实际的插入操作,3万行数据仅用时2.3秒。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:连接clickhouse

第二步:读取CSV

第三步:转换成与clickhouse相匹配的数据

第四步:插入,3万行耗时2.3s

from clickhouse_driver import Client
import types 
import time,datetime
from datetime import date

import csv


client = Client(host='192.168.1.231',database='test6',user='default',password='')
creattable="""CREATE TABLE test1 (\
				consumption_id UInt64,\
				member_id UInt64,\
				fans_id UInt64,\
				bill_date Date,\
				money Float32,\
				people_num UInt8,\
				dish_name String,\
				created_org UInt8,\
				open_id String,\
				subscribed_time DateTime,\
				unsubscribed_time DateTime,\
				source_type UInt8,\
				sns_type UInt8,\
				is_subscribed UInt8\
				)ENGINE=MergeTree(bill_date,(consumption_id,created_org),8192)"""
client.execute('DROP TABLE IF EXISTS test1')
data=[]
with open(r'C:\Users\Administrator\Desktop\test.csv') as csvfile:  
	readCSV = csv.reader(csvfile, delimiter=',')  
	for row in readCSV: 
		row[0]=int(row[0])
		row[1]=int(r
可以使用Python中的clickhouse-driver库来批量导入数据ClickHouse。 以下是一个基本的示例代码: ```python from clickhouse_driver import Client client = Client(host='localhost', port=9000) # 创建表 client.execute('CREATE TABLE example (id Int32, name String) ENGINE = Memory') # 准备数据 data = [(1, 'Alice'), (2, 'Bob'), (3, 'Charlie')] # 执行批量插入 client.execute('INSERT INTO example (id, name) VALUES', data) ``` 在这个例子中,我们首先创建了一个ClickHouse客户端对象,并连接到本地主机的ClickHouse服务器。接着,我们创建了一个名为“example”的内存表,并准备了一些数据。 最后,我们使用`execute()`方法将数据批量插入ClickHouse表中。需要注意的是,我们使用了`VALUES`关键字,而不是`VALUE`,这是因为我们想要插入多个值,而不是单个值。 如果你的数据量很大,可以考虑使用ClickHouseCSV格式批量加载数据,这可以更快地导入大量数据。以下是一个使用CSV格式批量导入数据的示例代码: ```python from clickhouse_driver import Client client = Client(host='localhost', port=9000) # 创建表 client.execute('CREATE TABLE example (id Int32, name String) ENGINE = Memory') # 准备数据 data = [(1, 'Alice'), (2, 'Bob'), (3, 'Charlie')] # 将数据写入CSV文件 with open('example.csv', 'w') as f: for row in data: f.write(f'{row[0]},{row[1]}\n') # 执行批量插入 client.execute('INSERT INTO example FORMAT CSV', open('example.csv', 'rb').read()) ``` 在这个例子中,我们首先创建了一个ClickHouse客户端对象,并连接到本地主机的ClickHouse服务器。接着,我们创建了一个名为“example”的内存表,并准备了一些数据。 然后,我们将数据写入CSV文件中,并使用`execute()`方法将CSV文件批量插入ClickHouse表中。需要注意的是,我们使用了`FORMAT CSV`关键字,这告诉ClickHouse我们要使用CSV格式导入数据
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值