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

将 TSV 加载到 TiDB Cloud Lake



什么是 TSV?

TSV(Tab Separated Values,在 TiDB Cloud Lake v1.2.890-nightly 及更高版本中称为 TEXT)是一种用于存储表格数据的简单文件格式,例如电子表格或数据库。TSV 文件格式与 CSV 非常相似,记录之间以换行符分隔,每个字段之间以制表符分隔。

以下示例展示了一个包含两条记录的 TSV 文件:

Title_0 Author_0 Title_1 Author_1

加载 TSV 文件

加载 TSV 文件的通用语法如下:

COPY INTO [<database>.]<table_name> FROM { userStage | internalStage | externalStage | externalLocation } [ PATTERN = '<regex_pattern>' ] [ FILE_FORMAT = ( TYPE = TSV, SKIP_HEADER = <integer>, COMPRESSION = AUTO ) ]

教程:从 TSV 文件加载数据

第 1 步:创建内部 stage

创建一个内部 stage 来存储 TSV 文件。

CREATE STAGE my_tsv_stage;

第 2 步:创建 TSV 文件

使用以下 SQL 语句生成一个 TSV 文件:

COPY INTO @my_tsv_stage FROM ( SELECT 'Title_' || CAST(number AS VARCHAR) AS title, 'Author_' || CAST(number AS VARCHAR) AS author FROM numbers(100000) ) FILE_FORMAT = (TYPE = TSV) ;

验证 TSV 文件是否已创建:

LIST @my_tsv_stage;

结果:

┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ name │ size │ md5 │ last_modified │ creator │ ├─────────────────────────────────────────────────────────────┼─────────┼────────────────────────────────────┼───────────────────────────────┼──────────────────┤ │ data_7413d5d0-f992-4d92-b28e-0e501d66bdc1_0000_00000000.tsv │ 2477780 │ "a906769144de7aa6a0056a86ddae97d2" │ 2023-12-26 11:56:19.000 +0000 │ NULL │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

第 3 步:创建目标表

CREATE TABLE books ( title VARCHAR, author VARCHAR );

第 4 步:直接从 TSV 复制

要将 TSV 文件中的数据直接复制到表中,请使用以下 SQL 命令:

COPY INTO books FROM @my_tsv_stage PATTERN = '.*[.]tsv' FILE_FORMAT = ( TYPE = TSV, SKIP_HEADER = 0, -- Skip the first line if it is a header, here we don't have a header COMPRESSION = AUTO );

结果:

┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ File │ Rows_loaded │ Errors_seen │ First_error │ First_error_line │ ├─────────────────────────────────────────────────────────────┼─────────────┼─────────────┼──────────────────┼──────────────────┤ │ data_7413d5d0-f992-4d92-b28e-0e501d66bdc1_0000_00000000.tsv │ 100000 │ 0 │ NULL │ NULL │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

第 4 步(可选):使用 SELECT 复制数据

如果你需要更多控制,例如在复制时转换数据,可以使用 SELECT 语句。更多信息请参阅 SELECT from TSV。

COPY INTO books (title, author) FROM ( SELECT $1, $2 FROM @my_tsv_stage ) PATTERN = '.*[.]tsv' FILE_FORMAT = ( TYPE = 'TSV', SKIP_HEADER = 0, -- Skip the first line if it is a header, here we don't have a header COMPRESSION = 'AUTO' );

文档内容是否有帮助?