SQL Server:如何创建具有自动增量的临时表?

时间:2018-07-13 20:38:00

标签: sql sql-server bulkinsert

我正在尝试创建具有自动增量的临时表并插入数据。该表已正确创建,但是我无法导入数据。

如果我只是省略ID表,则它可以正常工作,但是我需要让temp表具有一个我们可以引用的ID。

我得到的错误是:

  

4832,第16级,状态1,第1行
  批量加载:数据文件中遇到意外的文件结尾。

     

消息7399,第16级,状态1,第1行
  链接服务器“(null)”的OLE DB提供程序“ BULK”报告了一个错误。提供者未提供有关该错误的任何信息。

我的代码:

SET @strFileName = 'file.txt';
SET NOCOUNT OFF;

CREATE TABLE #UUID
(
      id INT NOT NULL IDENTITY PRIMARY KEY,
      cuuid NVARCHAR(50) COLLATE DATABASE_DEFAULT NULL
);

SET @strSQL = 'BULK INSERT #UUIDFROM ''' + @strFileName + ''' WITH (ROWTERMINATOR =''\n'' )';

EXEC @intErr = sp_executesql @strSQL;

我想知道它是否尝试插入id行而不是提示行中...

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果问题是数据库中的额外列不在数据文件中,则解决方案是视图。 ,我认为您无法使用临时表来做到这一点。

带有常规表:

CREATE TABLE temp_UUID (
 id INT NOT NULL IDENTITY PRIMARY KEY,
 cuuid NVARCHAR(50) COLLATE DATABASE_DEFAULT NULL
);

CREATE VIEW temp_UUID_v as
    SELECT cuuid
    FROM temp_UUID;

SET @strSQL = 'BULK INSERT temp_UUID_V FROM ''' + @strFileName + ''' WITH ( ROWTERMINATOR =''\n'' )';
EXEC @intErr= sp_executesql @strSQL;