sql server 数据库,创建一个表,并且插入70多万条数据的 sql 脚本
时间: 2024-09-09 14:13:14 浏览: 56
SQLServer 批量插入数据的两种方法
在 SQL Server 中,创建一个表并插入大量数据通常会涉及到分批操作,因为一次性插入过多的数据可能会导致性能问题。这里是一个简单的例子,假设我们创建一个名为 `Employees` 的表,包含 `ID`, `Name`, 和 `Salary` 这三个字段:
```sql
CREATE TABLE Employees (
ID INT PRIMARY KEY,
Name NVARCHAR(50),
Salary DECIMAL(18,2)
);
-- 创建索引可以提升查询速度,但注意对大数据量的影响
CREATE INDEX idx_Employees_Name ON Employees (Name);
-- 如果一次性插入70万条数据,我们可以按批次插入,例如每10000条一个事务
DECLARE @BatchSize INT = 10000;
SET NOCOUNT ON;
WHILE (@@ROWCOUNT <= 700000) DO
BEGIN
INSERT INTO Employees (ID, Name, Salary)
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS ID, 'Employee' + CAST(@BatchSize * ROW_NUMBER() OVER () AS VARCHAR(10)), RAND() * 100000 AS Salary
FROM sys.columns
WHERE OBJECT_NAME(id) = 'sys.columns'
OUTPUT Inserted.ID, Inserted.Name, Inserted.Salary
INTO #tempTable
BATCH SIZE (@BatchSize); -- 使用BATCH SIZE优化大批次插入
IF @@ROWCOUNT > 0
COMMIT TRANSACTION; -- 提交事务
END
-- 最后将数据从临时表转移到实际表
INSERT INTO Employees
SELECT * FROM #tempTable;
-- 清理临时表
DROP TABLE #tempTable;
```
阅读全文