sqlserver bulk
时间: 2024-12-29 18:22:28 浏览: 9
### SQL Server 批量插入更新操作及其示例
#### 使用 BULK INSERT 进行数据加载
为了高效地将大量数据导入到 SQL Server 数据库中,`BULK INSERT` 命令提供了一种快速的方法。此命令允许从文件读取数据并将其直接写入表中。
```sql
BULK INSERT dbo.Student
FROM 'C:\Data\students.csv'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
FIRSTROW = 2,
CODEPAGE = 'ACP'
);
```
上述代码展示了如何通过指定路径中的 CSV 文件向 `Student` 表批量插入记录[^1]。
#### 更新现有数据的批处理方法
当需要基于某些条件来修改多条记录时,可以利用 UPDATE 结合 JOIN 或子查询实现高效的批量更新:
```sql
UPDATE s
SET s.TotalScore = t.NewTotalScore
FROM Student AS s
JOIN (SELECT Id, SUM(Score) AS NewTotalScore FROM Scores GROUP BY Id) AS t ON s.Id = t.Id;
```
这段脚本会计算每个学生的总分,并相应地更新 `Student` 表内的成绩字段[^5]。
#### 合并(MERGE)语句的应用场景
对于既涉及插入又可能涉及到更新的情况,`MERGE` 是一种强大的工具。它可以在一次操作内完成匹配目标表与源表之间的差异,并根据定义的操作执行相应的动作——无论是插入新行还是更改已有行的数据。
```sql
MERGE INTO TargetTable AS target
USING SourceTable AS source
ON target.KeyColumn = source.KeyColumn
WHEN MATCHED THEN
UPDATE SET ColumnA = source.ColumnA,
ColumnB = source.ColumnB
WHEN NOT MATCHED BY TARGET THEN
INSERT (KeyColumn, ColumnA, ColumnB)
VALUES (source.KeyColumn, source.ColumnA, source.ColumnB);
```
这里展示了一个典型的 MERGE 操作例子,在两个表格之间同步特定列的内容[^4]。
阅读全文