diff --git a/TOC.md b/TOC.md index 4fbf3b42216f..c02e0278ad7c 100644 --- a/TOC.md +++ b/TOC.md @@ -698,6 +698,7 @@ - [`BACKUP`](/sql-statements/sql-statement-backup.md) - [`BATCH`](/sql-statements/sql-statement-batch.md) - [`BEGIN`](/sql-statements/sql-statement-begin.md) + - [`CANCEL LOAD DATA` 和 `DROP LOAD DATA`](/sql-statements/sql-statement-operate-load-data-job.md) - [`CALIBRATE RESOURCE`](/sql-statements/sql-statement-calibrate-resource.md) - [`CHANGE COLUMN`](/sql-statements/sql-statement-change-column.md) - [`CHANGE DRAINER`](/sql-statements/sql-statement-change-drainer.md) @@ -791,6 +792,7 @@ - [`SHOW INDEX [FROM|IN]`](/sql-statements/sql-statement-show-index.md) - [`SHOW INDEXES [FROM|IN]`](/sql-statements/sql-statement-show-indexes.md) - [`SHOW KEYS [FROM|IN]`](/sql-statements/sql-statement-show-keys.md) + - [`SHOW LOAD DATA`](/sql-statements/sql-statement-show-load-data.md) - [`SHOW MASTER STATUS`](/sql-statements/sql-statement-show-master-status.md) - [`SHOW PLACEMENT`](/sql-statements/sql-statement-show-placement.md) - [`SHOW PLACEMENT FOR`](/sql-statements/sql-statement-show-placement-for.md) diff --git a/error-codes.md b/error-codes.md index 7b251e8a1752..d61aaf6f9df6 100644 --- a/error-codes.md +++ b/error-codes.md @@ -293,6 +293,66 @@ TiDB 兼容 MySQL 的错误码,在大多数情况下,返回和 MySQL 一样 当 [`tidb_constraint_check_in_place_pessimistic`](/system-variables.md#tidb_constraint_check_in_place_pessimistic-从-v630-版本开始引入) 设置为 `OFF` 时,为保证事务的正确性,SQL 语句执行时产生的任何错误都可能导致 TiDB 返回 `8147` 报错并中止当前事务。具体的错误原因,请参考对应的报错信息。详见[约束](/constraints.md#悲观事务)。 +* Error Number: 8154 + + 目前 `LOAD DATA` 不支持从 TiDB 服务器本地导入数据,可以指定 `LOCAL` 从客户端导入,或者将数据上传到 S3/GCS 再进行导入。请参考 [`LOAD DATA`](/sql-statements/sql-statement-load-data.md)。 + +* Error Number: 8155 + + 目前 `LOAD DATA` 不支持从 local 导入 Parquet 格式的数据文件,只支持从 S3/GCS 导入 Parquet 格式的数据文件。你可以将数据上传到 S3/GCS 后再导入。请参考 [`LOAD DATA`](/sql-statements/sql-statement-load-data.md)。 + +* Error Number: 8156 + + `LOAD DATA` 语句的文件路径不能为空。需要设置正确的路径再进行导入。请参考 [`LOAD DATA`](/sql-statements/sql-statement-load-data.md)。 + +* Error Number: 8157 + + 不支持的数据格式。请参考 [`LOAD DATA`](/sql-statements/sql-statement-load-data.md) 查看支持的数据格式。 + +* Error Number: 8158 + + 传入的 S3/GCS 路径无效。请参考[外部存储](/br/backup-and-restore-storages.md)设置有效的路径。 + +* Error Number: 8159 + + TiDB 无法访问 `LOAD DATA` 语句中传入的 S3/GCS 路径。请确保填入的 S3/GCS bucket 存在,且你输入了正确的 access key 和 secret access key 以让 TiDB 服务器有权限访问 S3/GCS 对应的 bucket。 + +* Error Number: 8160 + + `LOAD DATA` 读取数据文件失败。请根据具体的错误提示进行处理。 + +* Error Number: 8162 + + `LOAD DATA` 语句存在错误。请参考 [`LOAD DATA`](/sql-statements/sql-statement-load-data.md) 查看已支持的功能。 + +* Error Number: 8163 + + 未知的 `LOAD DATA ... WITH ...` 选项。请参考 [`LOAD DATA`](/sql-statements/sql-statement-load-data.md) 查看支持的选项。 + +* Error Number: 8164 + + `LOAD DATA ... WITH ...` 选项取值无效。请参考 [`LOAD DATA`](/sql-statements/sql-statement-load-data.md) 查看有效的取值。 + +* Error Number: 8165 + + 重复指定了 `LOAD DATA ... WITH ...` 选项,每个选项只能指定一次。 + +* Error Number: 8166 + + 某些 `LOAD DATA ... WITH ...` 选项只能在特定的导入模式下才可以使用。请参考 [`LOAD DATA`](/sql-statements/sql-statement-load-data.md) 查看支持的选项。 + +* Error Number: 8170 + + 指定的 `LOAD DATA` job 不存在或不是由当前用户创建。目前用户只能查看自己创建的 job。 + +* Error Number: 8171 + + 对不支持的 `LOAD DATA` 任务状态不能进行运维操作。请根据具体的错误提示进行处理。 + +* Error Number: 8172 + + 指定 `LOCAL` 的 `LOAD DATA` 不能在后台运行,只有使用 S3/GCS 路径的 `LOAD DATA` 可以在后台运行。请参考 [`LOAD DATA`](/sql-statements/sql-statement-load-data.md) 更改 SQL 语句。 + * Error Number: 8200 尚不支持的 DDL 语法。请参考[与 MySQL DDL 的兼容性](/mysql-compatibility.md#ddl-的限制)。 diff --git a/mysql-schema.md b/mysql-schema.md index 8308405e00ba..c21f5d58047f 100644 --- a/mysql-schema.md +++ b/mysql-schema.md @@ -39,6 +39,7 @@ aliases: ['/docs-cn/dev/system-tables/system-table-overview/','/docs-cn/dev/refe * `column_stats_usage` 列统计信息的使用情况 * `schema_index_usage` 索引的使用情况 * `analyze_jobs` 正在执行的统计信息收集任务以及过去 7 天内的历史任务记录 +* `load_data_jobs` 正在执行或历史执行的 `LOAD DATA` 任务 ## 执行计划相关系统表 diff --git a/sql-statements/sql-statement-load-data.md b/sql-statements/sql-statement-load-data.md index 0a3962c69aa6..d9797e1b6910 100644 --- a/sql-statements/sql-statement-load-data.md +++ b/sql-statements/sql-statement-load-data.md @@ -12,14 +12,65 @@ aliases: ['/docs-cn/dev/sql-statements/sql-statement-load-data/','/docs-cn/dev/r ```ebnf+diagram LoadDataStmt ::= - 'LOAD' 'DATA' LocalOpt 'INFILE' stringLit DuplicateOpt 'INTO' 'TABLE' TableName CharsetOpt Fields Lines IgnoreLines ColumnNameOrUserVarListOptWithBrackets LoadDataSetSpecOpt + 'LOAD' 'DATA' LocalOpt 'INFILE' stringLit FormatOpt DuplicateOpt 'INTO' 'TABLE' TableName CharsetOpt Fields Lines IgnoreLines ColumnNameOrUserVarListOptWithBrackets LoadDataSetSpecOpt LoadDataOptionListOpt + +LocalOpt ::= ('LOCAL')? + +FormatOpt ::= + ('FORMAT' ('DELIMITED DATA' | 'SQL FILE' | 'PARQUET'))? + +Fields ::= + ('TERMINATED' 'BY' stringLit + | ('OPTIONALLY')? 'ENCLOSED' 'BY' stringLit + | 'ESCAPED' 'BY' stringLit + | 'DEFINED' 'NULL' 'BY' stringLit ('OPTIONALLY' 'ENCLOSED')?)? + +LoadDataOptionListOpt ::= + ('WITH' (LoadDataOption (',' LoadDataOption)*))? + +LoadDataOption ::= + detached | batch_size '=' numberLiteral ``` ## 参数说明 -用户可以使用 `LocalOpt` 参数来指定导入的数据文件位于客户端或者服务端。目前 TiDB 只支持从客户端进行数据导入,因此在导入数据时 `LocalOpt` 应设置成 `Local`。 +### `LOCAL` + +你可以使用 `LOCAL` 来指定导入位于客户端的数据文件,此时传入文件参数必须为客户端文件系统路径。 + +### S3/GCS 路径 + +如果你不指定 `LOCAL`,则文件参数必须是有效的 S3/GCS URI 路径,详见[外部存储](/br/backup-and-restore-storages.md)。 + +当数据文件存储在 S3/GCS 上时,你可以导入单个文件,也可使用通配符 `*` 来匹配需要导入的多个文件。注意通配符不会递归处理子目录下相关的文件。以数据存储在 S3 为例,示例如下: + +- 导入单个文件:`s3:///path/to/data/foo.csv` +- 导入指定路径下的所有文件:`s3:///path/to/data/*` +- 导入指定路径下的所有以 `.csv` 结尾的文件:`s3:///path/to/data/*.csv` +- 导入指定路径下所有以 `foo` 为前缀的文件:`s3:///path/to/data/foo*` +- 导入指定路径下以 `foo` 为前缀、以 `.csv` 结尾的文件:`s3:///path/to/data/foo*.csv` + +### `FORMAT` + +你可以通过 `FORMAT` 参数来指定数据文件的格式。如果不指定该参数,需要使用的格式为 `DELIMITED DATA`,该格式即 MySQL `LOAD DATA` 支持的数据格式。 + +### `Fields`、`Lines`、`Ignore Lines` + +只有数据格式是 `DELIMITED DATA` 时,才能指定 `Fields`、`Lines`、`Ignore Lines` 等语句。 + +你可以使用 `Fields` 和 `Lines` 参数来指定如何处理数据格式: + +- 使用 `FIELDS TERMINATED BY` 来指定数据的分隔符号。 +- 使用 `FIELDS ENCLOSED BY` 来指定数据的包围符号。 +- 如果你希望以某个字符为结尾来切分行数据,可以使用 `LINES TERMINATED BY` 来指定行的终止符。 + +可以使用 `DEFINED NULL BY` 来指定数据文件中如何表示 NULL 值。 -用户可以使用 `Fields` 和 `Lines` 参数来指定如何处理数据格式,使用 `FIELDS TERMINATED BY` 来指定每个数据的分隔符号,使用 `FIELDS ENCLOSED BY` 来指定消除数据的包围符号。如果用户希望以某个字符为结尾切分每行数据,可以使用 `LINES TERMINATED BY` 来指定行的终止符。 +- 与 MySQL 行为一致,如果 `ESCAPED BY` 不为空时,例如是默认值 `\`,那么 `\N` 会被认为是 NULL 值。 +- 如果使用 `DEFINED NULL BY`,例如 `DEFINED NULL BY 'my-null'`,`my-null` 会被认为是 NULL 值。 +- 如果使用 `DEFINED NULL BY ... OPTIONALLY ENCLOSED`,例如 `DEFINED NULL BY 'my-null' OPTIONALLY ENCLOSED`,`my-null` 和 `"my-null"`(假设 `ENCLOSED BY '"'`)会被认为是 NULL 值。 +- 如果没有使用 `DEFINED NULL BY` 或者 `DEFINED NULL BY ... OPTIONALLY ENCLOSED`,但使用了 `ENCLOSED BY`,例如 `ENCLOSED BY '"'`,那么 `NULL` 会被认为是 NULL 值。这个行为与 MySQL 一致。 +- 其他情况不会被认为是 NULL 值。 例如对于以下格式的数据: @@ -34,59 +85,70 @@ LoadDataStmt ::= FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' ``` -如果不指定处理数据的参数,将会按以下参数处理 +当数据格式为 `DELIMITED DATA` 且不指定处理数据的参数时,将按以下参数处理: ```sql -FIELDS TERMINATED BY '\t' ENCLOSED BY '' -LINES TERMINATED BY '\n' +FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' +LINES TERMINATED BY '\n' STARTING BY '' ``` -用户可以通过 `IGNORE number LINES` 参数来忽略文件开始的 `number` 行,例如可以使用 `IGNORE 1 LINES` 来忽略文件的首行。 +你可以通过 `IGNORE LINES` 参数来忽略文件开始的 `` 行。例如,可以使用 `IGNORE 1 LINES` 来忽略文件的第一行。 + +### `WITH detached` + +如果你指定了 S3/GCS 路径(且未指定 `LOCAL` 参数),可以通过 `WITH detached` 来让 `LOAD DATA` 任务在后台运行。此时 `LOAD DATA` 会返回 job ID。 + +可以通过 [`SHOW LOAD DATA`](/sql-statements/sql-statement-show-load-data.md) 查看创建的 job,也可以使用 [`CANCEL LOAD DATA` 和 `DROP LOAD DATA`](/sql-statements/sql-statement-operate-load-data-job.md) 取消或删除创建的 job。 + +### `WITH batch_size=` + +可以通过 `WITH batch_size=` 来指定批量写入 TiDB 时的行数,默认值为 `1000`。如果不希望分批写入,可以指定为 `0`。 ## 示例 -{{< copyable "sql" >}} +后台运行 job,执行后会输出对应的 job id: ```sql -CREATE TABLE trips ( - trip_id bigint NOT NULL PRIMARY KEY AUTO_INCREMENT, - duration integer not null, - start_date datetime, - end_date datetime, - start_station_number integer, - start_station varchar(255), - end_station_number integer, - end_station varchar(255), - bike_number varchar(255), - member_type varchar(255) - ); +LOAD DATA INFILE 's3://bucket-name/test.csv?access_key=XXX&secret_access_key=XXX' INTO TABLE my_db.my_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '' LINES TERMINATED BY '\n' WITH detached; ``` -``` -Query OK, 0 rows affected (0.14 sec) +```sql ++--------+ +| Job_ID | ++--------+ +| 150063 | ++--------+ +1 row in set (3.14 sec) ``` -通过 `LOAD DATA` 导入数据,指定数据的分隔符为逗号,忽略包围数据的引号,并且忽略文件的第一行数据。 +```sql +SHOW LOAD DATA JOB 1; +``` -如果此时遇到 `ERROR 1148 (42000): the used command is not allowed with this TiDB version` 报错信息。可以参考以下文档解决: +```sql ++--------+----------------------------+----------------------------+---------------------+---------------------------+--------------------+-------------+------------+-----------+------------+------------------+------------------+-------------+----------------+ +| Job_ID | Create_Time | Start_Time | End_Time | Data_Source | Target_Table | Import_Mode | Created_By | Job_State | Job_Status | Source_File_Size | Loaded_File_Size | Result_Code | Result_Message | ++--------+----------------------------+----------------------------+---------------------+---------------------------+-------------------+-------------+------------+-----------+------------+------------------+------------------+-------------+----------------+ +| 1 | 2023-03-16 22:29:12.990576 | 2023-03-16 22:29:12.991951 | 0000-00-00 00:00:00 | s3://bucket-name/test.csv | `my_db`.`my_table` | logical | root@% | loading | running | 52.43MB | 43.58MB | | | ++--------+----------------------------+----------------------------+---------------------+---------------------------+--------------------+-------------+------------+-----------+------------+------------------+------------------+-------------+----------------+ +1 row in set (0.01 sec) +``` -[ERROR 1148 (42000): the used command is not allowed with this TiDB version 问题的处理方法](/error-codes.md#mysql-原生报错汇总) +通过 `LOAD DATA` 导入数据,指定数据的分隔符为逗号,忽略包围数据的引号,并且忽略文件的第一行数据。 -{{< copyable "sql" >}} +如果此时遇到 `ERROR 1148 (42000): the used command is not allowed with this TiDB version` 报错信息。可以参考文档解决:[ERROR 1148 (42000): the used command is not allowed with this TiDB version 问题的处理方法](/error-codes.md#mysql-原生报错汇总) ```sql LOAD DATA LOCAL INFILE '/mnt/evo970/data-sets/bikeshare-data/2017Q4-capitalbikeshare-tripdata.csv' INTO TABLE trips FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (duration, start_date, end_date, start_station_number, start_station, end_station_number, end_station, bike_number, member_type); ``` -``` +```sql Query OK, 815264 rows affected (39.63 sec) Records: 815264 Deleted: 0 Skipped: 0 Warnings: 0 ``` `LOAD DATA` 也支持使用十六进制 ASCII 字符表达式或二进制 ASCII 字符表达式作为 `FIELDS ENCLOSED BY` 和 `FIELDS TERMINATED BY` 的参数。示例如下: -{{< copyable "sql" >}} - ```sql LOAD DATA LOCAL INFILE '/mnt/evo970/data-sets/bikeshare-data/2017Q4-capitalbikeshare-tripdata.csv' INTO TABLE trips FIELDS TERMINATED BY x'2c' ENCLOSED BY b'100010' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (duration, start_date, end_date, start_station_number, start_station, end_station_number, end_station, bike_number, member_type); ``` @@ -99,12 +161,15 @@ TiDB 中的 `LOAD DATA` 语句应该完全兼容 MySQL(除字符集选项被 > **注意:** > -> 在 TiDB 的早期版本中,`LOAD DATA` 语句每 20000 行进行一次提交。新版本的 TiDB 默认在一个事务中提交所有行。从 TiDB 4.0 及以前版本升级后,可能出现 `ERROR 8004 (HY000) at line 1: Transaction is too large, size: 100000058` 错误。 -> -> 要解决该问题,建议调大 `tidb.toml` 文件中的 `txn-total-size-limit` 值。如果无法增加此限制,还可以将 [`tidb_dml_batch_size`](/system-variables.md#tidb_dml_batch_size) 的值设置为 `20000` 来恢复升级前的行为。 +> - 在 TiDB v4.0.0 之前的版本中,`LOAD DATA` 语句每 20000 行进行一次提交。 +> - 从 TiDB v4.0.0 开始一直到 TiDB v6.6.0 的版本,TiDB 默认在一个事务中提交所有行。 +> - 从 TiDB v7.0.0 开始,批量提交的行数由 `LOAD DATA` 语句的 `WITH batch_size=` 参数控制,默认 1000 行提交一次。 +> - 从 TiDB v4.0.0 及以前版本升级后,可能出现 `ERROR 8004 (HY000) at line 1: Transaction is too large, size: 100000058` 错误。要解决该问题,建议调大 `tidb.toml` 文件中的 [`txn-total-size-limit`](/tidb-configuration-file.md#txn-total-size-limit) 值。如果无法增加此限制,还可以将 [`tidb_dml_batch_size`](/system-variables.md#tidb_dml_batch_size) 的值设置为 `20000` 来恢复升级前的行为。 ## 另请参阅 * [INSERT](/sql-statements/sql-statement-insert.md) * [乐观事务模型](/optimistic-transaction.md) * [TiDB Lightning](/tidb-lightning/tidb-lightning-overview.md) +* [`SHOW LOAD DATA`](/sql-statements/sql-statement-show-load-data.md) +* [`CANCEL LOAD DATA` 和 `DROP LOAD DATA`](/sql-statements/sql-statement-operate-load-data-job.md) diff --git a/sql-statements/sql-statement-operate-load-data-job.md b/sql-statements/sql-statement-operate-load-data-job.md new file mode 100644 index 000000000000..d3d061586718 --- /dev/null +++ b/sql-statements/sql-statement-operate-load-data-job.md @@ -0,0 +1,47 @@ +--- +title: CANCEL LOAD DATA 和 DROP LOAD DATA +summary: TiDB 数据库中 CANCEL LOAD DATA 和 DROP LOAD DATA 的使用概况。 +--- + +# CANCEL LOAD DATA 和 DROP LOAD DATA + +`CANCEL LOAD DATA` 语句用于取消系统中创建的 LOAD DATA 任务。 + +`DROP LOAD DATA` 语句用于删除系统中创建的 LOAD DATA 任务。 + +## 语法图 + +```ebnf+diagram +CancelLoadDataJobsStmt ::= + 'CANCEL' 'LAOD' 'DATA' 'JOB' JobID + +DropLoadDataJobsStmt ::= + 'DROP' 'LAOD' 'DATA' 'JOB' JobID +``` + +## 示例 + +```sql +CANCEL LOAD DATA JOB 1; +``` + +``` +Query OK, 0 rows affected (0.01 sec) +``` + +```sql +DROP LOAD DATA JOB 1; +``` + +``` +Query OK, 1 row affected (0.01 sec) +``` + +## MySQL 兼容性 + +该语句是 TiDB 对 MySQL 语法的扩展。 + +## 另请参阅 + +* [LOAD DATA](/sql-statements/sql-statement-load-data.md) +* [SHOW LOAD DATA](/sql-statements/sql-statement-show-load-data.md) diff --git a/sql-statements/sql-statement-show-load-data.md b/sql-statements/sql-statement-show-load-data.md new file mode 100644 index 000000000000..7e19ec61ff6b --- /dev/null +++ b/sql-statements/sql-statement-show-load-data.md @@ -0,0 +1,74 @@ +--- +title: SHOW LOAD DATA +summary: TiDB 数据库中 SHOW LOAD DATA 的使用概况。 +--- + +# SHOW LOAD DATA + +`SHOW LOAD DATA` 语句用于显示系统中创建的 LOAD DATA 任务。该语句只能显示由当前用户创建的任务。 + +## 语法图 + +```ebnf+diagram +ShowLoadDataJobsStmt ::= + 'SHOW' 'LAOD' 'DATA' 'JOBS' + +ShowLoadDataJobStmt ::= + 'SHOW' 'LAOD' 'DATA' 'JOB' JobID +``` + +`SHOW LOAD DATA` 语句显示的字段含义如下: + +| 列名 | 说明 | +|------------------|-------------------------| +| Job_ID | 任务 ID | +| Create_Time | 任务创建时间 | +| Start_Time | 任务启动时间 | +| End_Time | 任务结束时间 | +| Data_Source | 数据源信息 | +| Target_Table | 目标表 | +| Import_Mode | 导入模式,目前该字段只能取值 `logical` | +| Created_By | 创建该任务的数据库用户名 | +| Job_State | 表示任务当前所处的阶段,对于 `logical` 模式的任务,只有 `loading` 这一个阶段 | +| Job_Status | 表示当前任务的状态。有以下几种状态:`pending` 表示任务已创建但还未开始运行;`running` 表示运行中;`canceled` 表示已经取消的任务;`failed` 表示任务失败并退出;`finished` 表示任务已完成。 | +| Source_File_Size | 源文件大小 | +| Loaded_File_Size | 已经读到并写入目标表的数据量大小 | +| Result_Code | 任务状态为 `finished` 时,其值为 `0`。任务状态为 `failed` 时,其值为对应的错误码。 | +| Result_Message | 如果导入成功,则返回摘要信息。如果导入失败,则返回错误信息。 | + +## 示例 + +```sql +SHOW LOAD DATA JOBS; +``` + +``` ++--------+----------------------------+----------------------------+---------------------+---------------------------+--------------------+-------------+------------+-----------+------------+------------------+------------------+-------------+----------------+ +| Job_ID | Create_Time | Start_Time | End_Time | Data_Source | Target_Table | Import_Mode | Created_By | Job_State | Job_Status | Source_File_Size | Loaded_File_Size | Result_Code | Result_Message | ++--------+----------------------------+----------------------------+---------------------+---------------------------+-------------------+-------------+------------+-----------+------------+------------------+------------------+-------------+----------------+ +| 1 | 2023-03-16 22:29:12.990576 | 2023-03-16 22:29:12.991951 | 0000-00-00 00:00:00 | s3://bucket-name/test.csv | `my_db`.`my_table` | logical | root@% | loading | running | 52.43MB | 43.58MB | | | ++--------+----------------------------+----------------------------+---------------------+---------------------------+--------------------+-------------+------------+-----------+------------+------------------+------------------+-------------+----------------+ +1 row in set (0.01 sec) +``` + +```sql +SHOW LOAD DATA JOB 1; +``` + +``` ++--------+----------------------------+----------------------------+---------------------+---------------------------+--------------------+-------------+------------+-----------+------------+------------------+------------------+-------------+----------------+ +| Job_ID | Create_Time | Start_Time | End_Time | Data_Source | Target_Table | Import_Mode | Created_By | Job_State | Job_Status | Source_File_Size | Loaded_File_Size | Result_Code | Result_Message | ++--------+----------------------------+----------------------------+---------------------+---------------------------+-------------------+-------------+------------+-----------+------------+------------------+------------------+-------------+----------------+ +| 1 | 2023-03-16 22:29:12.990576 | 2023-03-16 22:29:12.991951 | 0000-00-00 00:00:00 | s3://bucket-name/test.csv | `my_db`.`my_table` | logical | root@% | loading | running | 52.43MB | 43.58MB | | | ++--------+----------------------------+----------------------------+---------------------+---------------------------+--------------------+-------------+------------+-----------+------------+------------------+------------------+-------------+----------------+ +1 row in set (0.01 sec) +``` + +## MySQL 兼容性 + +该语句是 TiDB 对 MySQL 语法的扩展。 + +## 另请参阅 + +* [`LOAD DATA`](/sql-statements/sql-statement-load-data.md) +* [`CANCEL LOAD DATA` 和 `DROP LOAD DATA`](/sql-statements/sql-statement-operate-load-data-job.md)