tencent cloud

文档反馈

本地文件导入

最后更新时间:2024-01-19 16:45:30
    本文介绍如何把本地文件的数据导入到云数据仓库。

    前提条件

    1. 已经安装 clickhouse-client,没有安装可点击下载并安装。
    2. 支持导入到云数据仓库的常见文件格式为 TabSeparated、TabSeparatedRaw、TabSeparatedWithNames、TabSeparatedWithNamesAndTypes、Template、CSV和CSVWithNames 等。更多支持的文件格式,请参见文件格式及说明
    3. 确保 clickhouse-client 所在的本地服务器和云数据仓库ClickHous 集群处于同一 VPC 下。
    注意:
    不同的客户端和服务器版本彼此兼容,但是一些特性可能在旧客户机中不可用。我们建议使用与服务器应用相同版本的客户端。当您尝试使用旧版本的客户端时,服务器上的 clickhouse-client 会显示如下信息: “ClickHouse client version is older than ClickHouse server. It may lack support for new features.”可使用如下命令进行导入:cat <data_file> | ./clickhouse-client --host=<host> --port=<port> --user=<username> --password=<password> --query="INSERT INTO <table_name> FORMAT <format>";
    在批量模式中,默认的数据格式是 TabSeparated 分隔的。您可以根据查询来灵活设置 FORMAT 格式。 默认情况下,在批量模式中只能执行单个查询。为了从一个 Script 中执行多个查询,可以使用--multiquery 参数。除了 INSERT 请求外,这种方式在任何地方都有用。查询的结果会连续且不含分隔符地输出。 同样的,为了执行大规模的查询,您可以为每个查询执行一次 clickhouse-client。但注意到每次启动 clickhouse-client 程序都需要消耗几十毫秒时间。

    操作步骤

    以下以本地文件 test.csv 为例说明整个数据导入的过程。
    1. 准备本地文件 test.csv,并写入数据如下。
    $ cat /test.csv
    1,2,3
    3,2,1
    78,43,45
    2. ClickHouse 目标表创建。
    如果您的集群是单副本版:
    CREATE TABLE test.test on cluster default_cluster
    (
    `column1` UInt32,
    `column2` UInt32,
    `column3` UInt32
    )
    engine = MergeTree()
    order by column1;
    如果您的集群是双副本版:
    create table test.test on cluster default_cluster
    (
    `column1` UInt32,
    `column2` UInt32,
    `column3` UInt32
    )
    engine = ReplicatedMergeTree('/clickhouse/tables/test/test/{shard}', '{replica}')
    order by column1;
    创建分布式表:
    create table test.test_dis on cluster default
    AS test.test
    engine = Distributed('default_cluster', 'test', 'test', rand());
    3. 向目标表写入数据。
    cat data.csv | clickhouse-client --query="INSERT INTO test FORMAT CSV"
    4. 查询。
    select * from test;
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持