Skip to content

Commit b087b93

Browse files
authored
data import: add IMPORT INTO stmt (#14183)
1 parent 4f45ef2 commit b087b93

10 files changed

+440
-12
lines changed

TOC.md

+3
Original file line numberDiff line numberDiff line change
@@ -708,6 +708,7 @@
708708
- [`BATCH`](/sql-statements/sql-statement-batch.md)
709709
- [`BEGIN`](/sql-statements/sql-statement-begin.md)
710710
- [`CALIBRATE RESOURCE`](/sql-statements/sql-statement-calibrate-resource.md)
711+
- [`CANCEL IMPORT JOB`](/sql-statements/sql-statement-cancel-import-job.md)
711712
- [`CHANGE COLUMN`](/sql-statements/sql-statement-change-column.md)
712713
- [`CHANGE DRAINER`](/sql-statements/sql-statement-change-drainer.md)
713714
- [`CHANGE PUMP`](/sql-statements/sql-statement-change-pump.md)
@@ -751,6 +752,7 @@
751752
- [`FLUSH TABLES`](/sql-statements/sql-statement-flush-tables.md)
752753
- [`GRANT <privileges>`](/sql-statements/sql-statement-grant-privileges.md)
753754
- [`GRANT <role>`](/sql-statements/sql-statement-grant-role.md)
755+
- [`IMPORT INTO`](/sql-statements/sql-statement-import-into.md)
754756
- [`INSERT`](/sql-statements/sql-statement-insert.md)
755757
- [`KILL [TIDB]`](/sql-statements/sql-statement-kill.md)
756758
- [`LOAD DATA`](/sql-statements/sql-statement-load-data.md)
@@ -797,6 +799,7 @@
797799
- [`SHOW ERRORS`](/sql-statements/sql-statement-show-errors.md)
798800
- [`SHOW [FULL] FIELDS FROM`](/sql-statements/sql-statement-show-fields-from.md)
799801
- [`SHOW GRANTS`](/sql-statements/sql-statement-show-grants.md)
802+
- [`SHOW IMPORT JOB`](/sql-statements/sql-statement-show-import-job.md)
800803
- [`SHOW INDEX [FROM|IN]`](/sql-statements/sql-statement-show-index.md)
801804
- [`SHOW INDEXES [FROM|IN]`](/sql-statements/sql-statement-show-indexes.md)
802805
- [`SHOW KEYS [FROM|IN]`](/sql-statements/sql-statement-show-keys.md)

error-codes.md

+37-5
Original file line numberDiff line numberDiff line change
@@ -299,23 +299,55 @@ TiDB 兼容 MySQL 的错误码,在大多数情况下,返回和 MySQL 一样
299299

300300
* Error Number: 8156
301301

302-
`LOAD DATA` 语句的文件路径不能为空。需要设置正确的路径再进行导入。请参考 [`LOAD DATA`](/sql-statements/sql-statement-load-data.md)。
302+
传入的文件路径不能为空。需要设置正确的路径再进行导入。
303+
304+
* Error Number: 8157
305+
306+
不支持的文件格式。请参考 [`IMPORT INTO`](/sql-statements/sql-statement-import-into.md#format) 查看支持的格式。
303307

304308
* Error Number: 8158
305309

306-
传入的 S3/GCS 路径无效。请参考[外部存储](/br/backup-and-restore-storages.md)设置有效的路径
310+
传入的文件路径不合法。请根据具体的错误提示进行处理。S3/GCS 路径设置可参考[外部存储](/br/backup-and-restore-storages.md#uri-格式)
307311

308312
* Error Number: 8159
309313

310-
TiDB 无法访问 `LOAD DATA` 语句中传入的 S3/GCS 路径。请确保填入的 S3/GCS bucket 存在,且你输入了正确的 access keysecret access key 以让 TiDB 服务器有权限访问 S3/GCS 对应的 bucket。
314+
TiDB 无法访问传入的 S3/GCS 路径。请确保填写的 S3/GCS bucket 存在,且输入了正确的 Access KeySecret Access Key 以让 TiDB 服务器有权限访问 S3/GCS 对应的 bucket。
311315

312316
* Error Number: 8160
313317

314-
`LOAD DATA` 读取数据文件失败。请根据具体的错误提示进行处理。
318+
读取数据文件失败。请根据具体的错误提示进行处理。
315319

316320
* Error Number: 8162
317321

318-
`LOAD DATA` 语句存在错误。请参考 [`LOAD DATA`](/sql-statements/sql-statement-load-data.md) 查看已支持的功能。
322+
语句存在错误。请根据具体的错误提示进行处理。
323+
324+
* Error Number: 8163
325+
326+
未知的选项。请参考 [`IMPORT INTO`](/sql-statements/sql-statement-import-into.md#参数说明) 查看支持的选项。
327+
328+
* Error Number: 8164
329+
330+
选项取值无效。请参考 [`IMPORT INTO`](/sql-statements/sql-statement-import-into.md#参数说明) 查看有效的取值。
331+
332+
* Error Number: 8165
333+
334+
重复指定了选项,每个选项只能指定一次。
335+
336+
* Error Number: 8166
337+
338+
某些选项只能在特定的条件下才可以使用。请根据具体的错误提示进行处理。请参考 [`IMPORT INTO`](/sql-statements/sql-statement-import-into.md#参数说明) 查看支持的选项。
339+
340+
* Error Number: 8170
341+
342+
指定的 job 不存在。
343+
344+
* Error Number: 8171
345+
346+
该 job 的状态不能进行当前操作。请根据具体的错误提示进行处理。
347+
348+
* Error Number: 8173
349+
350+
执行 `IMPORT INTO` 时,TiDB 会对当前环境进行检查,比如检查下游表是否为空等。请根据具体的错误提示进行处理。
319351

320352
* Error Number: 8200
321353

mysql-schema.md

+1
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,4 @@ aliases: ['/docs-cn/dev/system-tables/system-table-overview/','/docs-cn/dev/refe
7272
* `expr_pushdown_blacklist` 表达式下推的黑名单
7373
* `opt_rule_blacklist` 逻辑优化规则的黑名单
7474
* `table_cache_meta` 缓存表的信息
75+
* `tidb_import_jobs` 记录 [`IMPORT INTO`](/sql-statements/sql-statement-import-into.md) 任务信息

privilege-management.md

+10
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,10 @@ SELECT * FROM INFORMATION_SCHEMA.USER_PRIVILEGES WHERE grantee = "'root'@'%'";
342342

343343
需要拥有 `SUPER` 或者 `BACKUP_ADMIN` 权限。
344344

345+
### CANCEL IMPORT JOB
346+
347+
需要 `SUPER` 权限来取消属于其他用户的任务,否则只能取消当前用户创建的任务。
348+
345349
### CREATE DATABASE
346350

347351
需要拥有全局 `CREATE` 权限。
@@ -374,6 +378,10 @@ SELECT * FROM INFORMATION_SCHEMA.USER_PRIVILEGES WHERE grantee = "'root'@'%'";
374378

375379
需要对所操作的表拥有 `DROP` 权限。
376380

381+
### IMPORT INTO
382+
383+
需要对目标表拥有 `SELECT``UPDATE``INSERT``DELETE``ALTER` 权限。如果是导入存储在 TiDB 本地的文件,还需要有 `FILE` 权限。
384+
377385
### LOAD DATA
378386

379387
`LOAD DATA` 需要对所操作的表拥有 `INSERT` 权限。执行 `REPLACE INTO` 语句还需要对所操作的表拥有 `DELETE` 权限。
@@ -400,6 +408,8 @@ SELECT * FROM INFORMATION_SCHEMA.USER_PRIVILEGES WHERE grantee = "'root'@'%'";
400408

401409
`SHOW PROCESSLIST` 需要 `SUPER` 权限来显示属于其他用户的连接。
402410

411+
`SHOW IMPORT JOB` 需要 `SUPER` 权限来显示属于其他用户的任务,否则只能看到当前用户创建的任务。
412+
403413
### CREATE ROLE/USER
404414

405415
`CREATE ROLE` 需要 `CREATE ROLE` 权限。
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
---
2+
title: CANCEL IMPORT
3+
summary: TiDB 数据库中 CANCEL IMPORT 的使用概况。
4+
---
5+
6+
# CANCEL IMPORT
7+
8+
`CANCEL IMPORT` 语句用于取消 TiDB 中创建的数据导入任务。
9+
10+
## 所需权限
11+
12+
只有导入任务的创建者或拥有 `SUPER` 权限的用户才能够取消任务。
13+
14+
## 语法图
15+
16+
```ebnf+diagram
17+
CancelImportJobsStmt ::=
18+
'CANCEL' 'IMPORT' 'JOB' JobID
19+
```
20+
21+
## 示例
22+
23+
下面示例取消 ID 为 1 的导入任务:
24+
25+
```sql
26+
CANCEL IMPORT JOB 1;
27+
```
28+
29+
输出结果如下:
30+
31+
```
32+
Query OK, 0 rows affected (0.01 sec)
33+
```
34+
35+
## MySQL 兼容性
36+
37+
该语句是 TiDB 对 MySQL 语法的扩展。
38+
39+
## 另请参阅
40+
41+
* [`IMPORT INTO`](/sql-statements/sql-statement-import-into.md)
42+
* [`SHOW IMPORT JOB`](/sql-statements/sql-statement-show-import-job.md)

0 commit comments

Comments
 (0)