有几种不同的方法可以将您的数据摄取到 TimescaleDB 托管服务中。本节包含以下说明:

在开始之前,请确保您已创建了您的 TimescaleDB 托管服务服务,并且可以使用 psql 连接到它。

  1. 使用 psql 连接到您的服务。

    psql -h <HOSTNAME> -p <PORT> -U <USERNAME> -W -d <DATABASE_NAME>

    您可以从 MST 仪表板 的服务概览中检索服务 URL、端口和登录凭据。

  2. 为您的数据创建一个新数据库。在本例中,新数据库名为 new_db

    CREATE DATABASE new_db;
    \c new_db;
  3. 在您的数据库中创建一个新的 SQL 表。您为表创建的列必须与源数据中的列匹配。在本例中,该表存储天气状况数据,并具有时间戳、位置和温度列

    CREATE TABLE conditions (
    time TIMESTAMPTZ NOT NULL,
    location text NOT NULL,
    temperature DOUBLE PRECISION NULL
    );
  4. 加载 timescaledb PostgreSQL 扩展

    CREATE EXTENSION timescaledb;
    \dx
  5. 将 SQL 表转换为超表

    SELECT create_hypertable('conditions', by_range('time'));
    注意

    by_range 维度构建器是 TimescaleDB 2.13 的新增功能。

当您成功设置新数据库后,可以使用以下方法之一摄取数据。

如果您有存储在 .csv 文件中的数据集,您可以将其导入到空的超表中。您需要先创建新表,然后再导入数据。

重要提示

在开始之前,请确保您已准备了新的数据库

  1. 使用 timescaledb-parallel-copy 工具将数据插入到新的超表中。您应该已经安装了该工具,但如果需要,您可以从我们的 GitHub 存储库手动安装。在本例中,我们使用四个工作进程插入数据

    timescaledb-parallel-copy \
    --connection '<service_url>' \
    --table conditions \
    --file ~/Downloads/example.csv \
    --workers 4 \
    --copy-options "CSV" \
    --skip-header

    我们建议您将工作进程的数量设置为低于客户端机器或服务器上可用 CPU 核心的数量,以防止工作进程不得不竞争资源。这有助于加快您的数据摄取速度。

  2. 可选: 如果您不想使用 timescaledb-parallel-copy 工具,或者如果您有一个非常小的数据集,则可以使用 PostgreSQL COPY 命令代替

    psql '<service_url>/new_db?sslmode=require' -c "\copy conditions FROM <example.csv> WITH (FORMAT CSV, HEADER)"

您可以使用客户端驱动程序(如 JDBC、Python 或 Node.js)将数据直接插入到您的新数据库中。

有关使用 ODBC 驱动程序的详细信息,请参阅 PostgreSQL 说明

有关使用各种语言(包括 Python 和 node.js)的信息,请参阅代码快速入门

如果您的数据存储在消息队列中,您可以将其导入到 Timescale 数据库中。本节提供有关使用 Kafka Connect PostgreSQL 连接器的说明。

此连接器将 PostgreSQL 更改事件从 Kafka Connect 部署到运行时服务。它监视 Timescale 服务器中的一个或多个模式,并将所有更改事件写入 Kafka 主题,然后可以由一个或多个客户端独立使用。可以分发 Kafka Connect 以提供容错能力,从而确保连接器正在运行并不断跟上数据库中的更改。

您也可以将 PostgreSQL 连接器用作库,而无需 Kafka 或 Kafka Connect。这允许应用程序和服务直接连接到 Timescale 并获取有序的更改事件。在这种环境中,应用程序必须记录连接器的进度,以便在重新启动时,连接器可以从上次停止的位置继续。这种方法对于不太关键的用例可能很有用。但是,对于生产用例,我们建议您将连接器与 Kafka 和 Kafka Connect 一起使用。

有关使用 Kafka 连接器的信息,请参阅这些说明

关键词

在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页