本节介绍如何通过官方客户端clickhouse-client从本地文件中导入数据。

操作步骤

  1. 获取数据库连接信息,详情请参见连接集群
  2. 根据ClickHouse版本号、操作系统类型,下载clickhouse-client客户端程序。
    下载地址如下表所示。
    操作系统 ClickHouse版本号 下载链接
    Linux OS 19.15.2.2 单击下载
  3. 使用如下命令进行导入。
    cat <data_file> | ./clickhouse-client --host=<host> --port=<port> --user=<username> --password=<password> --query="INSERT INTO <table_name> FORMAT <format>";
    说明 从外网导入数据速度较慢,如果数据量较大,或者要测试导入性能。请采用以下方法:
    • 从内网导入:购买ECS,将ECS实例加入云数据库ClickHouse集群同一个VPC网络,从ECS通过集群内网地址连接集群并导入数据。
    • 多进程导入:将原始文件等分为多份,然后启动多个client多进程并发导入。
    表 1. 导入数据文件格式说明
    常用文件格式 说明
    TabSeparated 数据按行写入文本文件中,列与列之间通过Tab分割。需要对tab、换行符、反斜线进行转义处理,分别对应为:\t, \n, \\。 NULL值使用\N进行表示。
    TabSeparatedWithNames 与TabSeparated类似,区别是第一行是列名。解析时,第一行会被忽略,因此不能够使用第一行列名来决定列的位置。
    TabSeparatedWithNamesAndTypes 与TabSeparated类似,区别是第一行是列名,第二行是类型。解析时,第一行、第二行会被忽略。
    CSV 数据按行写入文件中,默认使用逗号进行列与列之间的分割。字符串类型使用双引号括起来,字符串的双引号本身使用两个双引号进行转义。数值类型不使用双引号,可以使用--format_csv_delimiter指定其他列分隔符,例如如果列与列之间使用竖线分割,则命令示例如下:
    cat data.csv | clickhouse-client --format_csv_delimiter="|" --query="INSERT INTO test.csv FORMAT CSV"
    CSVWithNames 与CSV类似,第一行表示列名。解析时,第一行会被直接忽略。