📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

使用 MySQL 命令行客户端将数据导入到 TiDB Cloud Premium



本文介绍如何使用 MySQL Command-Line Client (mysql) 将数据导入到 TiDB Cloud Premium。以下各节提供了从 SQL 或 CSV 文件导入数据的分步说明。此过程执行的是逻辑导入,即 MySQL 命令行客户端会从你的本地机器向 TiDB Cloud 重放 SQL 语句。

前提条件

在通过 MySQL 命令行客户端将数据导入到 TiDB Cloud Premium 实例之前,你需要满足以下前提条件:

  • 你可以访问你的 TiDB Cloud Premium 实例。
  • 在本地计算机上安装 MySQL 命令行客户端 (mysql)。

步骤 1. 连接到你的 TiDB Cloud Premium 实例

使用 MySQL 命令行客户端连接到你的 TiDB Cloud Premium 实例。如果这是你第一次连接,请执行以下步骤来配置网络连接并生成 TiDB SQL root 用户密码:

  1. 登录 TiDB Cloud console,并导航到 My TiDB 页面。然后,点击目标 TiDB Cloud Premium 实例的名称,进入其实例概览页面。

  2. 点击右上角的 Connect。此时会显示连接对话框。

  3. 确保连接对话框中的配置与你的运行环境一致。

    • Connection Type 设置为 Public
    • Connect With 设置为 MySQL CLI
    • Operating System 与你的环境匹配。
  4. 点击 Generate Password 以创建一个随机密码。如果你已经配置了密码,请复用该凭据,或在继续之前轮换该密码。

步骤 2. 定义目标数据库和表结构

在导入数据之前,创建与你的数据集匹配的目标表结构。

以下是一个示例 SQL 文件(products-schema.sql),用于创建示例数据库和表。请根据你的环境更新数据库名或表名。

CREATE DATABASE IF NOT EXISTS test; USE test; CREATE TABLE products ( product_id INT PRIMARY KEY, product_name VARCHAR(255), price DECIMAL(10, 2) );

在你的 TiDB Cloud Premium 实例上运行该 schema 文件,以便在下一步加载数据之前,数据库和表已经存在。

步骤 3. 从 SQL 或 CSV 文件导入数据

使用 MySQL 命令行客户端将数据加载到你在步骤 2 中创建的 schema 中。根据需要将占位符替换为你自己的文件路径、凭据和数据集,然后按照与你的源格式匹配的工作流进行操作。

    执行以下操作以从 SQL 文件导入数据:

    1. 提供一个 SQL 文件(例如 products.sql),其中包含你要导入的数据。该 SQL 文件必须包含带有数据的 INSERT 语句,类似如下:

      INSERT INTO products (product_id, product_name, price) VALUES (1, 'Laptop', 999.99), (2, 'Smartphone', 499.99), (3, 'Tablet', 299.99);
    2. 使用以下命令从 SQL 文件导入数据:

      mysql --comments --connect-timeout 150 \ -u '<your_username>' -h <your_instance_host> -P 4000 -D test \ --ssl-mode=VERIFY_IDENTITY --ssl-ca=<your_ca_path> \ -p<your_password> < products.sql

      将占位符值(例如 <your_username><your_instance_host><your_password><your_ca_path> 以及 SQL 文件名)替换为你自己的连接信息和文件路径。

    执行以下操作以从 CSV 文件导入数据:

    1. 确保目标数据库和表已存在于 TiDB 中(例如你在步骤 2 中创建的 products 表)。

    2. 提供一个示例 CSV 文件(例如 products.csv),其中包含你要导入的数据。示例如下:

      products.csv:

      product_id,product_name,price 1,Laptop,999.99 2,Smartphone,499.99 3,Tablet,299.99
    3. 使用以下命令从 CSV 文件导入数据:

      mysql --comments --connect-timeout 150 \ -u '<your_username>' -h <your_instance_host> -P 4000 -D test \ --ssl-mode=VERIFY_IDENTITY --ssl-ca=<your_ca_path> \ -p<your_password> \ -e "LOAD DATA LOCAL INFILE '<your_csv_path>' INTO TABLE products FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 LINES (product_id, product_name, price);"

      将占位符值(例如 <your_username><your_instance_host><your_password><your_ca_path><your_csv_path> 以及表名)替换为你自己的连接信息和数据集路径。

    步骤 4. 验证已导入的数据

    导入完成后,运行基本查询以验证是否存在预期的行,并确认数据正确无误。

    使用 MySQL 命令行客户端连接到同一个数据库,并运行验证查询,例如统计行数和检查示例记录:

    mysql --comments --connect-timeout 150 \ -u '<your_username>' -h <your_instance_host> -P 4000 -D test \ --ssl-mode=VERIFY_IDENTITY --ssl-ca=<your_ca_path> \ -p<your_password> \ -e "SELECT COUNT(*) AS row_count FROM products; \ SELECT * FROM products ORDER BY product_id LIMIT 5;"

    预期输出(示例):

    +-----------+ | row_count | +-----------+ | 3 | +-----------+ +------------+---------------+--------+ | product_id | product_name | price | +------------+---------------+--------+ | 1 | Laptop | 999.99 | | 2 | Smartphone | 499.99 | | 3 | Tablet | 299.99 | +------------+---------------+--------+

    将占位符值替换为你自己的连接信息,并根据你的数据集结构调整验证查询。

    文档内容是否有帮助?