Skip to content

Commit 42d48e7

Browse files
🌐 Add LLM Translations (#1975)
* 💬Generate LLM translations * Update dml-insert-multi.md --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: z <[email protected]>
1 parent 51b0cbc commit 42d48e7

File tree

2 files changed

+55
-47
lines changed

2 files changed

+55
-47
lines changed

docs/cn/sql-reference/10-sql-commands/10-dml/dml-insert-multi.md

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import FunctionDescription from '@site/src/components/FunctionDescription';
66

77
<FunctionDescription description="Introduced or updated: v1.2.396"/>
88

9-
在单个事务中将行插入到多个表中,可以选择插入操作依赖于某些条件(有条件地)或不考虑任何条件(无条件地)发生
9+
在单个事务中将行插入到多个表中,可以选择插入操作依赖于某些条件(有条件地)或在没有任何条件的情况下发生(无条件地)。
1010

1111
:::tip atomic operations
1212
Databend 通过原子操作确保数据完整性。插入、更新、替换和删除要么完全成功,要么完全失败。
@@ -24,7 +24,7 @@ INSERT [ OVERWRITE ] ALL
2424
SELECT ...
2525

2626

27-
-- Conditional INSERT ALL: 将每行插入到多个表中,但只有在满足某些条件时才插入
27+
-- Conditional INSERT ALL: 将每行插入到多个表中,但前提是满足某些条件
2828
INSERT [ OVERWRITE ] ALL
2929
WHEN <condition> THEN
3030
INTO <target_table> [ ( <target_col_name> [ , ... ] ) ] [ VALUES ( <source_col_name> [ , ... ] ) ]
@@ -48,18 +48,22 @@ INSERT [ OVERWRITE ] FIRST
4848
SELECT ...
4949
```
5050

51-
| 参数 | 描述 |
52-
| ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
53-
| OVERWRITE | 指示在插入之前是否应截断现有数据。 |
54-
| `( <target_col_name> [ , ... ] )` | 指定目标表中将要插入数据的列名。<br/>- 如果省略,数据将插入到目标表中的所有列。 |
55-
| VALUES `( <source_col_name> [ , ... ] )` | 指定源列名,数据将从这些列插入到目标表中。<br/>- 如果省略,子查询返回的所有列都将插入到目标表中。<br/>- 在 `<source_col_name>` 中列出的列的数据类型必须与 `<target_col_name>` 中指定的列的数据类型匹配或兼容。 |
56-
| SELECT ... | 一个子查询,提供要插入到目标表中的数据。<br/>- 您可以选择在子查询中显式地为列分配别名。这允许您在 WHEN 子句和 VALUES 子句中通过别名引用这些列。 |
57-
| WHEN | 用于确定何时将数据插入到特定目标表中的条件语句。<br/>- 有条件的 multi-table insert 至少需要一个 WHEN 子句。<br/>- 一个 WHEN 子句可以包含多个 INTO 子句,并且这些 INTO 子句可以指向同一个表。<br/>- 要无条件地执行 WHEN 子句,可以使用 `WHEN 1 THEN ...`|
58-
| ELSE | 指定在 WHEN 子句中指定的任何条件都不满足时要执行的操作。 |
51+
| 参数 | 描述 |
52+
| ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
53+
| OVERWRITE | 指示在插入之前是否应截断现有数据。 |
54+
| `( <target_col_name> [ , ... ] )` | 指定目标表中将要插入数据的列名。<br/>- 如果省略,数据将插入到目标表中的所有列。 |
55+
| VALUES `( <source_col_name> [ , ... ] )` | 指定源列名,数据将从这些列插入到目标表中。<br/>- 如果省略,子查询返回的所有列都将插入到目标表中。<br/>- `<source_col_name>` 中列出的列的数据类型必须与 `<target_col_name>` 中指定的列的数据类型匹配或兼容。 |
56+
| SELECT ... | 一个子查询,提供要插入到目标表中的数据。<br/>- 您可以选择在子查询中显式地为列分配别名。这允许您在 WHEN 子句和 VALUES 子句中通过它们的别名引用这些列。 |
57+
| WHEN | 用于确定何时将数据插入到特定目标表中的条件语句。<br/>- 有条件的多表插入至少需要一个 WHEN 子句。<br/>- 一个 WHEN 子句可以包含多个 INTO 子句,并且这些 INTO 子句可以指向同一个表。<br/>- 要无条件地执行 WHEN 子句,您可以使用 `WHEN 1 THEN ...`|
58+
| ELSE | 指定如果 WHEN 子句中指定的任何条件都不满足时要采取的操作。 |
59+
60+
## 重要事项
61+
62+
- 聚合函数、外部 UDF 和窗口函数不允许在 `VALUES(...)` 表达式中使用。
5963

6064
## 示例
6165

62-
### 示例 -1:Unconditional INSERT ALL
66+
### 示例-1:Unconditional INSERT ALL
6367

6468
此示例演示了 Unconditional INSERT ALL 操作,将 `employee_data_source` 表中的每一行插入到 `employees``employee_history` 表中。
6569

@@ -95,7 +99,7 @@ VALUES
9599
(3, 'Charlie', '2023-03-25');
96100
```
97101

98-
2. 使用 Unconditional INSERT ALL 操作将数据从 `employee_data_source` 表传输到 `employees``employee_history` 表中。
102+
2. 使用 unconditional INSERT ALL 操作将数据从 `employee_data_source` 表传输到 `employees``employee_history` 表中。
99103

100104
```sql
101105
-- Unconditional INSERT ALL: 将数据插入到 employees 和 employee_history 表中
@@ -127,9 +131,9 @@ SELECT * FROM employee_history;
127131
└─────────────────────────────────────────────────────┘
128132
```
129133

130-
### 示例 -2:Conditional INSERT ALL & FIRST
134+
### 示例-2:Conditional INSERT ALL & FIRST
131135

132-
此示例演示了有条件的 INSERT ALL,根据特定条件将销售数据插入到单独的表中,其中满足多个条件的记录将插入到所有相应的表中。
136+
此示例演示了 conditional INSERT ALL,根据特定条件将销售数据插入到单独的表中,其中满足多个条件的记录将插入到所有相应的表中。
133137

134138
1. 创建三个表:products、`high_quantity_sales``high_price_sales``sales_data_source`。然后,将三个销售记录插入到 `sales_data_source` 表中。
135139

@@ -169,10 +173,10 @@ VALUES
169173
(3, 103, '2023-03-25', 10, 200.00);
170174
```
171175

172-
2. 使用有条件的 INSERT ALL 根据特定条件将行插入到多个表中。数量大于 4 的记录将插入到 `high_quantity_sales` 表中,总价超过 50 的记录将插入到 `high_price_sales` 表中。
176+
2. 使用 conditional INSERT ALL 根据特定条件将行插入到多个表中。数量大于 4 的记录插入到 `high_quantity_sales` 表中,总价超过 50 的记录插入到 `high_price_sales` 表中。
173177

174178
```sql
175-
-- Conditional INSERT ALL: 将每行插入到多个表中,但只有在满足某些条件时才插入
179+
-- Conditional INSERT ALL: 将每行插入到多个表中,但前提是满足某些条件
176180
INSERT ALL
177181
WHEN quantity > 4 THEN INTO high_quantity_sales
178182
WHEN total_price > 50 THEN INTO high_price_sales
@@ -238,7 +242,7 @@ SELECT * FROM high_price_sales;
238242

239243
### Example-3: Insert with Explicit Alias
240244

241-
此示例演示如何在 VALUES 子句中使用别名,以根据雇用日期在 '2023-02-01' 之后,有条件地将 employees 表中的行插入到 `employee_history` 表中。
245+
此示例演示如何在 VALUES 子句中使用别名,以根据 hire date 是否在 '2023-02-01' 之后,有条件地将 employees 表中的行插入到 `employee_history` 表中。
242246

243247
1. 创建两个表 `employees``employee_history`,并将示例员工数据插入到 `employees` 表中。
244248

@@ -264,13 +268,13 @@ VALUES
264268
(3, 'Michael', 'Johnson', '2023-03-01');
265269
```
266270

267-
2. 利用带有别名的条件插入,将 employees 表中的记录传输到 `employee_history` 表,筛选雇用日期在 '2023-02-01' 之后的记录。
271+
2. 利用带有别名的条件插入,将 employees 表中的记录传输到 `employee_history` 表,并筛选 hire date 在 '2023-02-01' 之后的记录。
268272

269273
```sql
270274
INSERT ALL
271275
WHEN hire_date >= '2023-02-01' THEN INTO employee_history
272276
VALUES (employee_id, full_name, hire_date) -- 使用别名 'full_name' 插入
273-
SELECT employee_id, CONCAT(first_name, ' ', last_name) AS full_name, hire_date -- 将连接的全名别名为 'full_name'
277+
SELECT employee_id, CONCAT(first_name, ' ', last_name) AS full_name, hire_date -- 将连接的完整名称别名为 'full_name'
274278
FROM employees;
275279

276280
SELECT * FROM employee_history;

docs/cn/sql-reference/10-sql-commands/10-dml/dml-insert.md

Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -25,32 +25,36 @@ INSERT { OVERWRITE | INTO } <table>
2525
}
2626
```
2727

28-
| 参数 | 描述 |
29-
|-----------|------------------------------------------------------------------------------|
30-
| OVERWRITE | 指示在插入之前是否应截断现有数据。 |
28+
| 参数 | 描述 |
29+
|-----------|-----------------------------------------------------------------------------|
30+
| OVERWRITE | 指示在插入之前是否应截断现有数据。 |
3131
| VALUES | 允许直接插入特定值或列的默认值。 |
3232

33+
## 重要说明
34+
35+
- 聚合函数、外部 UDF 和窗口函数在 `VALUES(...)` 表达式中是不允许的。
36+
3337
## 示例
3438

3539
### 示例-1:使用 OVERWRITE 插入值
3640

37-
在此示例中,INSERT OVERWRITE 语句用于截断 employee 表并插入新数据,从而将所有现有记录替换为 ID 为 100 的 employee 提供的值
41+
在此示例中,INSERT OVERWRITE 语句用于截断 employee 表并插入新数据,将所有现有记录替换为 ID 为 100 的员工提供的值
3842

3943
```sql
4044
CREATE TABLE employee (
4145
employee_id INT,
4246
employee_name VARCHAR(50)
4347
);
4448

45-
-- employee 表中插入初始数据
49+
-- Inserting initial data into the employee table
4650
INSERT INTO employee(employee_id, employee_name) VALUES
4751
(101, 'John Doe'),
4852
(102, 'Jane Smith');
4953

50-
-- 使用 OVERWRITE 插入新数据
54+
-- Inserting new data with OVERWRITE
5155
INSERT OVERWRITE employee VALUES (100, 'John Johnson');
5256

53-
-- 显示 employee 表的内容
57+
-- Displaying the contents of the employee table
5458
SELECT * FROM employee;
5559

5660
┌────────────────────────────────────┐
@@ -62,30 +66,30 @@ SELECT * FROM employee;
6266

6367
### 示例-2:插入查询结果
6468

65-
当插入 SELECT 语句的结果时,列的映射遵循它们在 SELECT 子句中的位置。因此,SELECT 语句中的列数必须等于或大于 INSERT 表中的列数。如果 SELECT 语句和 INSERT 表中列的数据类型不同,则会根据需要执行类型转换
69+
当插入 SELECT 语句的结果时,列的映射遵循它们在 SELECT 子句中的位置。因此,SELECT 语句中的列数必须等于或大于 INSERT 表中的列数。如果 SELECT 语句和 INSERT 表中列的数据类型不同,将根据需要执行类型转换
6670

6771
```sql
68-
-- 创建一个名为“employee_info”的表,其中包含三列:“employee_id”、“employee_name”和“department
72+
-- Creating a table named 'employee_info' with three columns: 'employee_id', 'employee_name', and 'department'
6973
CREATE TABLE employee_info (
7074
employee_id INT,
7175
employee_name VARCHAR(50),
7276
department VARCHAR(50)
7377
);
7478

75-
-- 向“employee_info”表中插入一条记录
79+
-- Inserting a record into the 'employee_info' table
7680
INSERT INTO employee_info VALUES ('101', 'John Doe', 'Marketing');
7781

78-
-- 创建一个名为“employee_data”的表,其中包含三列:“ID”、“Name”和“Dept
82+
-- Creating a table named 'employee_data' with three columns: 'ID', 'Name', and 'Dept'
7983
CREATE TABLE employee_data (
8084
ID INT,
8185
Name VARCHAR(50),
8286
Dept VARCHAR(50)
8387
);
8488

85-
-- 将数据从“employee_info”插入到“employee_data”中
89+
-- Inserting data from 'employee_info' into 'employee_data'
8690
INSERT INTO employee_data SELECT * FROM employee_info;
8791

88-
-- 显示“employee_data”表的内容
92+
-- Displaying the contents of the 'employee_data' table
8993
SELECT * FROM employee_data;
9094

9195
┌───────────────────────────────────────────────────────┐
@@ -95,31 +99,31 @@ SELECT * FROM employee_data;
9599
└───────────────────────────────────────────────────────┘
96100
```
97101

98-
此示例演示如何创建一个名为sales_summary”的汇总表,用于存储每个产品的总销量和收入等汇总销售数据,方法是汇总 sales 表中的信息:
102+
此示例演示如何创建一个名为 "sales_summary" 的摘要表,用于存储每个产品的聚合销售数据,例如总销售数量和收入,通过聚合 sales 表中的信息:
99103

100104
```sql
101-
-- 创建一个用于销售数据的表
105+
-- Creating a table for sales data
102106
CREATE TABLE sales (
103107
product_id INT,
104108
quantity_sold INT,
105109
revenue DECIMAL(10, 2)
106110
);
107111

108-
-- 插入一些示例销售数据
112+
-- Inserting some sample sales data
109113
INSERT INTO sales (product_id, quantity_sold, revenue) VALUES
110114
(1, 100, 500.00),
111115
(2, 150, 750.00),
112116
(1, 200, 1000.00),
113117
(3, 50, 250.00);
114118

115-
-- 创建一个汇总表来存储汇总的销售数据
119+
-- Creating a summary table to store aggregated sales data
116120
CREATE TABLE sales_summary (
117121
product_id INT,
118122
total_quantity_sold INT,
119123
total_revenue DECIMAL(10, 2)
120124
);
121125

122-
-- 将汇总的销售数据插入到汇总表中
126+
-- Inserting aggregated sales data into the summary table
123127
INSERT INTO sales_summary (product_id, total_quantity_sold, total_revenue)
124128
SELECT
125129
product_id,
@@ -130,7 +134,7 @@ FROM
130134
GROUP BY
131135
product_id;
132136

133-
-- 显示 sales_summary 表的内容
137+
-- Displaying the contents of the sales_summary table
134138
SELECT * FROM sales_summary;
135139

136140
┌──────────────────────────────────────────────────────────────────┐
@@ -144,26 +148,26 @@ SELECT * FROM sales_summary;
144148

145149
### 示例-3:插入默认值
146150

147-
此示例演示如何创建一个名为“staff_records的表,并为部门和状态等列设置默认值。然后插入数据,展示默认值的使用。
151+
此示例说明如何创建一个名为 "staff_records" 的表,并为部门和状态等列设置默认值。然后插入数据,展示默认值的使用。
148152

149153
```sql
150-
-- 创建一个“staff_records”表,其中包含“employee_id”、“department”、“salary”和“status”列,并带有默认值
154+
-- Creating a table 'staff_records' with columns 'employee_id', 'department', 'salary', and 'status' with default values
151155
CREATE TABLE staff_records (
152156
employee_id INT NULL,
153157
department VARCHAR(50) DEFAULT 'HR',
154158
salary FLOAT,
155159
status VARCHAR(10) DEFAULT 'Active'
156160
);
157161

158-
-- 将数据插入到带有默认值的“staff_records”中
162+
-- Inserting data into 'staff_records' with default values
159163
INSERT INTO staff_records
160164
VALUES
161165
(DEFAULT, DEFAULT, DEFAULT, DEFAULT),
162166
(101, DEFAULT, 50000.00, DEFAULT),
163167
(102, 'Finance', 60000.00, 'Inactive'),
164168
(103, 'Marketing', 70000.00, 'Active');
165169

166-
-- 显示“staff_records”表的内容
170+
-- Displaying the contents of the 'staff_records' table
167171
SELECT * FROM staff_records;
168172

169173
┌───────────────────────────────────────────────────────────────────────────┐
@@ -176,9 +180,9 @@ SELECT * FROM staff_records;
176180
└───────────────────────────────────────────────────────────────────────────┘
177181
```
178182

179-
### 示例-4:使用 Stage 文件插入
183+
### 示例-4: Stage 文件插入
180184

181-
通过 Databend,您可以使用 INSERT INTO 语句从 Stage 文件将数据插入到表中。这是通过 Databend 的[查询 Stage 文件](/guides/load-data/transform/querying-stage)的能力实现的,随后将查询结果合并到表中
185+
Databend 允许您使用 INSERT INTO 语句从 Stage 文件将数据插入到表中。这是通过 Databend 的 [查询 Stage 文件](/guides/load-data/transform/querying-stage) 的能力,然后将查询结果合并到表中来实现的
182186

183187
1. 创建一个名为 `sample` 的表:
184188

@@ -194,7 +198,7 @@ CREATE TABLE sample
194198

195199
2. 使用示例数据设置内部 Stage
196200

197-
我们将建立一个名为 `mystage` 的内部 Stage,然后使用示例数据填充它
201+
我们将建立一个名为 `mystage` 的内部 Stage,然后用示例数据填充它
198202

199203
```sql
200204
CREATE STAGE mystage;
@@ -215,10 +219,10 @@ FROM
215219
FILE_FORMAT = (TYPE = PARQUET);
216220
```
217221

218-
3. 使用 `INSERT INTO` 从 Stage Parquet 文件插入数据
222+
3. 使用 `INSERT INTO` 从 Stage Parquet 文件插入数据
219223

220224
:::tip
221-
您可以使用 [COPY INTO](dml-copy-into-table.md) 命令中提供的 FILE_FORMAT 和 COPY_OPTIONS 指定文件格式和各种复制相关设置。当 `purge` 设置为 `true` 时,只有在数据更新成功后才会删除原始文件。
225+
您可以使用 [COPY INTO](dml-copy-into-table.md) 命令中提供的 FILE_FORMAT 和 COPY_OPTIONS 指定文件格式和各种与复制相关的设置。当 `purge` 设置为 `true` 时,只有在数据更新成功后才会删除原始文件。
222226
:::
223227

224228
```sql

0 commit comments

Comments
 (0)