From 29195a7e8757a397a4209205b0e12b0f5b0f1136 Mon Sep 17 00:00:00 2001 From: Jiaqiang Huang <96465211+River2000i@users.noreply.github.com> Date: Wed, 11 Jun 2025 13:25:11 +0800 Subject: [PATCH 1/5] import into auto format --- sql-statements/sql-statement-import-into.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql-statements/sql-statement-import-into.md b/sql-statements/sql-statement-import-into.md index 8a8fc751447f..4b310885c418 100644 --- a/sql-statements/sql-statement-import-into.md +++ b/sql-statements/sql-statement-import-into.md @@ -126,7 +126,7 @@ SET 表达式左侧只能引用 `ColumnNameOrUserVarList` 中没有的列名。 ### Format -`IMPORT INTO` 支持 3 种数据文件格式,包括 `CSV`、`SQL` 和 `PARQUET`。当不指定该参数时,默认格式为 `CSV`。 +`IMPORT INTO` 支持 3 种数据文件格式,包括 `CSV`、`SQL` 和 `PARQUET`。当不指定该参数时,根据文件名特征自动识别文件类型,如果文件名不包含文件后缀,会使用默认格式 `CSV`。 ### WithOptions From e15bb5091377ad3cd49af71e1253b1880671a0d6 Mon Sep 17 00:00:00 2001 From: Jiaqiang Huang Date: Mon, 13 Oct 2025 11:11:34 +0800 Subject: [PATCH 2/5] Update sql-statements/sql-statement-import-into.md Co-authored-by: Aolin --- sql-statements/sql-statement-import-into.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql-statements/sql-statement-import-into.md b/sql-statements/sql-statement-import-into.md index 4b310885c418..6e597bccbbf1 100644 --- a/sql-statements/sql-statement-import-into.md +++ b/sql-statements/sql-statement-import-into.md @@ -126,7 +126,7 @@ SET 表达式左侧只能引用 `ColumnNameOrUserVarList` 中没有的列名。 ### Format -`IMPORT INTO` 支持 3 种数据文件格式,包括 `CSV`、`SQL` 和 `PARQUET`。当不指定该参数时,根据文件名特征自动识别文件类型,如果文件名不包含文件后缀,会使用默认格式 `CSV`。 +`IMPORT INTO` 支持 3 种数据文件格式,包括 `CSV`、`SQL` 和 `PARQUET`。如果未显式指定该参数,TiDB 会根据文件名的后缀自动识别文件类型。若文件名不包含后缀,则默认使用 `CSV` 格式。 ### WithOptions From 1d11879a04dd90be194c845e1b55c0e7b871f938 Mon Sep 17 00:00:00 2001 From: lilin90 Date: Mon, 10 Nov 2025 16:22:04 +0800 Subject: [PATCH 3/5] Align it with the English updates --- sql-statements/sql-statement-import-into.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/sql-statements/sql-statement-import-into.md b/sql-statements/sql-statement-import-into.md index 6e597bccbbf1..53e8bcde4bbe 100644 --- a/sql-statements/sql-statement-import-into.md +++ b/sql-statements/sql-statement-import-into.md @@ -105,11 +105,11 @@ SET 表达式左侧只能引用 `ColumnNameOrUserVarList` 中没有的列名。 ### fileLocation -用于指定数据文件的存储位置,该位置可以是 S3 或 GCS URI 路径,也可以是 TiDB 本地文件路径。 +用于指定数据文件的存储位置以及要导入的文件。你可以指定单个文件,也可以使用通配符匹配多个文件。 -- S3 或 GCS URI 路径:配置详见[外部存储服务的 URI 格式](/external-storage-uri.md)。 +- 云存储(Amazon S3 或 GCS):提供完整的对象存储 URI,格式参见[外部存储服务的 URI 格式](/external-storage-uri.md)。 -- TiDB 本地文件路径:必须为绝对路径,数据文件后缀必须为 `.csv`、`.sql` 或 `.parquet`。确保该路径对应的文件存储在当前用户连接的 TiDB 节点上,且当前连接的用户有 `FILE` 权限。 +- TiDB 本地文件路径:必须为绝对路径。确保指定的路径和文件存在于当前会话所连接的 TiDB 节点上,并确认你拥有所需的 `FILE` 权限。 > **注意:** > @@ -122,11 +122,17 @@ SET 表达式左侧只能引用 `ColumnNameOrUserVarList` 中没有的列名。 - 导入指定路径下的所有以 `.csv` 结尾的文件:`s3:///path/to/data/*.csv` - 导入指定路径下所有以 `foo` 为前缀的文件:`s3:///path/to/data/foo*` - 导入指定路径下以 `foo` 为前缀、以 `.csv` 结尾的文件:`s3:///path/to/data/foo*.csv` -- 导入指定路径下的 `1.csv` 和 `2.csv`:`s3:///path/to/data/[12].csv` +- 导入指定路径下的 `1.csv` 和 `2.csv`:`s3:///path/to/data/[12].csv`,适用于导入特定的非连续文件 +- 使用 range 导入 `1.csv`、`2.csv` 和 `3.csv`:`s3:///path/to/data/[1-3].csv` +- 导入名称为单字符的文件,使用 `^` 进行排除操作,例如导入除 `1.csv` 和 `2.csv` 之外的单字符文件名文件:`s3:///path/to/data/[^12].csv` + +> **注意:** +> +> 在每个导入任务中,只能使用一种文件格式。如果通配符匹配到不同扩展名的文件(例如同一个匹配模式中同时匹配到 `.csv` 和 `.sql`),预检查将失败。你需要为每种格式的文件分别执行独立的 `IMPORT INTO` 语句。 ### Format -`IMPORT INTO` 支持 3 种数据文件格式,包括 `CSV`、`SQL` 和 `PARQUET`。如果未显式指定该参数,TiDB 会根据文件名的后缀自动识别文件类型。若文件名不包含后缀,则默认使用 `CSV` 格式。 +`IMPORT INTO` 支持三种数据文件格式:`CSV`、`SQL` 和 `PARQUET`。如果省略 `FORMAT` 子句,TiDB 会根据文件扩展名 (`.csv`, `.sql`, `.parquet`) 自动识别文件格式。TiDB 支持压缩文件,在检测格式时会忽略压缩后缀 (`.gz`, `.gzip`, `.zstd`, `.zst`, `.snappy`)。如果文件没有扩展名,TiDB 默认将文件格式视为 `CSV`。 ### WithOptions @@ -178,6 +184,7 @@ SET 表达式左侧只能引用 `ColumnNameOrUserVarList` 中没有的列名。 > > - Snappy 压缩文件必须遵循[官方 Snappy 格式](https://github.com/google/snappy)。不支持其他非官方压缩格式。 > - 由于无法对单个大压缩文件进行并发解压,因此压缩文件的大小会直接影响导入速度。建议解压后的文件大小不要超过 256 MiB。 +> - 当省略 `FORMAT` 子句时,TiDB 会先从文件名中去掉一个压缩后缀,然后检查剩余的扩展名,以确定文件是 `CSV` 还是 `SQL`。 ### 全局排序 From 583955007961a55c675850fdd2825428317bed06 Mon Sep 17 00:00:00 2001 From: Lilian Lee Date: Thu, 13 Nov 2025 14:34:30 +0800 Subject: [PATCH 4/5] Apply suggestions from code review Co-authored-by: D3Hunter --- sql-statements/sql-statement-import-into.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql-statements/sql-statement-import-into.md b/sql-statements/sql-statement-import-into.md index 53e8bcde4bbe..547970c1422d 100644 --- a/sql-statements/sql-statement-import-into.md +++ b/sql-statements/sql-statement-import-into.md @@ -109,7 +109,7 @@ SET 表达式左侧只能引用 `ColumnNameOrUserVarList` 中没有的列名。 - 云存储(Amazon S3 或 GCS):提供完整的对象存储 URI,格式参见[外部存储服务的 URI 格式](/external-storage-uri.md)。 -- TiDB 本地文件路径:必须为绝对路径。确保指定的路径和文件存在于当前会话所连接的 TiDB 节点上,并确认你拥有所需的 `FILE` 权限。 +- TiDB 本地文件路径:必须为绝对路径,数据文件后缀必须为 `.csv`、`.sql` 或 `.parquet`。确保该路径对应的文件存储在当前用户连接的 TiDB 节点上,且当前连接的用户有 `FILE` 权限。 > **注意:** > From ea58d19da746a34118d67f87683cbcc0aa6bc1a0 Mon Sep 17 00:00:00 2001 From: Lilian Lee Date: Fri, 14 Nov 2025 16:57:24 +0800 Subject: [PATCH 5/5] Update wording Co-authored-by: xixirangrang --- sql-statements/sql-statement-import-into.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql-statements/sql-statement-import-into.md b/sql-statements/sql-statement-import-into.md index 547970c1422d..889acee8196f 100644 --- a/sql-statements/sql-statement-import-into.md +++ b/sql-statements/sql-statement-import-into.md @@ -123,7 +123,7 @@ SET 表达式左侧只能引用 `ColumnNameOrUserVarList` 中没有的列名。 - 导入指定路径下所有以 `foo` 为前缀的文件:`s3:///path/to/data/foo*` - 导入指定路径下以 `foo` 为前缀、以 `.csv` 结尾的文件:`s3:///path/to/data/foo*.csv` - 导入指定路径下的 `1.csv` 和 `2.csv`:`s3:///path/to/data/[12].csv`,适用于导入特定的非连续文件 -- 使用 range 导入 `1.csv`、`2.csv` 和 `3.csv`:`s3:///path/to/data/[1-3].csv` +- 导入指定名称范围 (range) 的文件 `1.csv`、`2.csv` 和 `3.csv`:`s3:///path/to/data/[1-3].csv` - 导入名称为单字符的文件,使用 `^` 进行排除操作,例如导入除 `1.csv` 和 `2.csv` 之外的单字符文件名文件:`s3:///path/to/data/[^12].csv` > **注意:**