从Clickhouse读取大量数据写入本地文件

从Clickhouse读大量数据并写入本地文件的Python实现

网上很多例子是讲怎么连clickhouse,但如果数据量很大,需要循环读取并写入,这些例子就不适用了。
这篇文章是用python3实现的读取大量数据并写入文件。用clickhouse-driver.Client中的execute_iter这个方法,代码示例如下:

# 连clickhouse取数据写入本地文件
from clickhouse_driver import Client

client = Client(host='***.***.***.***', database='****', user='****', password='****')
sql_01 = ""
res_gen = client.execute_iter(sql_01)
file_01 = "D:\\***\\***\\***.txt"
with open(file_01,'w') as f:
	# 迭代的每个元素row是个tuple类型
    for row in res_gen:
        # 写入文件前,tuple类型需要转成string
        s = '\t'.join(row) + '\n'
        f.write(s)

这样循环一条条数据写入文件,不会占用大量内存,有这方面需求的伙伴可以参考这个代码。