使用IDENTITY时批量插入

时间:2014-01-31 17:31:42

标签: sql-server

这是我的表结构。

CREATE TABLE emp
   (empid INT IDENTITY(101, 1),
    empname VARCHAR(20),
    salary DECIMAL(10,2),
    Created_date DATETIME DEFAULT(GETDATE())
   );   

现在我有像

这样的记录
'Ramesh',10000
'Arun',20000 

.txt文件中。

我需要将这些记录批量插入表中。请指导我编写批量插入查询。

1 个答案:

答案 0 :(得分:2)

基本上,您首先需要一个暂存表,其结构完全匹配您的.txt文件:

CREATE TABLE emp_staging
   (empname VARCHAR(20),
    salary DECIMAL(10,2)
   );   

然后,BULK将.txt文件中的数据插入到您的临时表中并检查:

BULK INSERT dbo.emp_staging
   FROM 'd:\temp\emps.txt'
   WITH 
      (
         FIELDTERMINATOR =',',
         ROWTERMINATOR ='\n'
      );

SELECT * FROM dbo.emp_staging

完成后 - 现在您可以使用INSERT .. SELECT ...将临时表中的数据插入到实际表中:

INSERT INTO dbo.emp
        ( empname, salary )
    SELECT empname, salary
    FROM dbo.emp_staging

SELECT * FROM dbo.emp