0

我试图插入的表有一个额外的第一列,它是文件中不存在的 id。下面是我尝试在插入到附加列时尝试从文件中插入记录(带有标题行),但我在命令上遇到重复的语法错误

SELECT  @fileName=[FileName], 
            @email=[Email],
            @CustomerId=ImportBy,
            @fullPath = 'D:test.txt'
    FROM [dbo].[Log_Import] 
    WHERE INTID = @intId      
                            
    SET @command = 'BULK INSERT [dbo].[ProcessTesting] SELECT ' + CAST(@intID AS VARCHAR(50)) +', * FROM ''' + @fullPath + ''' WITH ( FIELDTERMINATOR =''\t'', FIRSTROW = 1 )'
    EXEC(@command)
4

1 回答 1

1

您可以使用自定义语句OPENROWSET(BULK插入。INSERT...SELECT

我强烈建议您使用格式文件。

SELECT  @fileName=[FileName], 
            @email=[Email],
            @CustomerId=ImportBy,
            @fullPath = 'D:test.txt'
    FROM [dbo].[Log_Import] 
    WHERE INTID = @intId      
                            
SET @command = '
INSERT [dbo].[ProcessTesting] (ID, OtherColumnsHere)
SELECT 
  ' + CAST(@intID AS VARCHAR(50)) +',
  OtherColumnsHere
FROM OPENROWSET(BULK ' + QUOTENAME(@fullPath, '''') + ', FORMATFILE = ''YourFormatFile'', FIRSTROW = 1 ) r;
';

EXEC sp_executesql @command;

注意使用QUOTENAME正确转义文件名

于 2021-10-29T10:11:45.633 回答