使用存储过程批量插入:故障排除
在尝试使用存储过程批量插入数据时,开发人员遇到了语法错误。目标是将有效的 BULK INSERT 查询复制到过程中。以下是对该问题及其解决方案的分析。
该问题是由于尝试将文件名作为变量传递给存储过程中的 BULK INSERT 命令而引起的。不幸的是,这是 BULK INSERT 不支持的操作。
以下是使用变量尝试失败的示例:
DECLARE @filename VARCHAR(255) SET @filename = 'e:\5-digit Commercial.csv' BULK INSERT ZIPCodes FROM @filename WITH
相反,BULK INSERT 命令需要硬编码的文件路径。要解决此限制,请考虑将 BULK INSERT 语句构造为具有固定文件名的字符串,并将其作为动态 SQL 执行。
DECLARE @filepath NVARCHAR(500) SET @filepath = N'e:\5-digit Commercial.csv' DECLARE @bulkinsert NVARCHAR(2000) SET @bulkinsert = N'BULK INSERT ZIPCodes FROM ''' @filepath N''' WITH (FIRSTROW = 2, FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'')' EXEC sp_executesql @bulkinsert
通过使用动态SQL,可以执行构造的语句,解决了原来存储过程实现中遇到的语法错误。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3