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

将 NDJSON 加载到 TiDB Cloud Lake



什么是 NDJSON?

NDJSON 构建于 JSON 之上,并且是 JSON 的严格子集。每一行都必须包含一个独立且完整的有效 JSON 对象。

以下示例展示了一个包含两个 JSON 对象的 NDJSON 文件:

{"title":"Title_0","author":"Author_0"} {"title":"Title_1","author":"Author_1"}

加载 NDJSON 文件

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

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

教程:从 NDJSON 文件加载数据

第 1 步:创建内部 stage

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

CREATE STAGE my_ndjson_stage;

第 2 步:创建 NDJSON 文件

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

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

验证 NDJSON 文件是否已创建:

LIST @my_ndjson_stage;

结果:

┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ name │ size │ md5 │ last_modified │ creator │ ├────────────────────────────────────────────────────────────────┼─────────┼────────────────────────────────────┼───────────────────────────────┼──────────────────┤ │ data_b3d94fad-3052-42e4-b090-26409e88c7b9_0000_00000000.ndjson │ 4777780 │ "d1cc98fefc3e3aa0649cade880d754aa" │ 2023-12-26 12:15:59.000 +0000 │ NULL │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

第 3 步:创建目标表

CREATE TABLE books ( title VARCHAR, author VARCHAR );

第 4 步:直接从 NDJSON 复制

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

COPY INTO books FROM @my_ndjson_stage PATTERN = '.*[.]ndjson' FILE_FORMAT = ( TYPE = NDJSON );

结果:

┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ File │ Rows_loaded │ Errors_seen │ First_error │ First_error_line │ ├────────────────────────────────────────────────────────────────┼─────────────┼─────────────┼──────────────────┼──────────────────┤ │ data_b3d94fad-3052-42e4-b090-26409e88c7b9_0000_00000000.ndjson │ 100000 │ 0 │ NULL │ NULL │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

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

如果你需要更精细的控制,例如在复制过程中转换数据,请使用 SELECT 语句。更多信息,请参见 SELECT from NDJSON。

COPY INTO books(title, author) FROM ( SELECT $1:title, $1:author FROM @my_ndjson_stage ) PATTERN = '.*[.]ndjson' FILE_FORMAT = ( TYPE = NDJSON );

文档内容是否有帮助?