一. 导出
注意1: 端口号不是8123,阿里云默认python的tcp端口号是3306,自建默认是9000
注意1: 账号密码不要带有特殊符号,哪怕有使用转义依然会登录不上去,自建一个导入导出的专属账号吧
from celery.utils.log import get_task_logger
import subprocess
logger = get_task_logger(__name__)
def export_clickhouse_data(databaseName, tableName, hubId):
sqlCommand = """ clickhouse-client --host="你的host" \
--port="你的端口" --user="你的用户名" --password="你的密码" \
--query="select * from {}.{} where hubId = '{}' \
FORMAT CSV" > {}.csv""".format(databaseName, tableName, hubId, hubId+tableName)
logger.info(f"开始执行导出数据")
subprocess.Popen(sqlCommand, stdout=subprocess.PIPE, shell=True)
logger.info(f"结束执行导出数据")
export_clickhouse_data("ctirobot", "dim_hub", "e90d7310-959c-4948-bf09-c67e93600848")
二. 导入
from celery.utils.log import get_task_logger
import subprocess
logger = get_task_logger(__name__)
def import_clickhouse_data(databaseName, tableName, hubId):
sqlCommand = """ clickhouse-client --user="你的用户名" --host="你的host" --port="你的端口号" --password="你的密码" \
--query=" insert into {}.{} \
FORMAT CSV" < {}.csv""".format(databaseName, tableName, hubId+tableName)
logger.info(f"开始执行导入数据")
subprocess.Popen(sqlCommand, stdout=subprocess.PIPE, shell=True)
logger.info(f"结束执行导入数据")
import_clickhouse_data("ctirobot", "dim_hub", "e90d7310-959c-4948-bf09-c67e93600848")