首页 > 数据库 > mysql教程 > 为什么 BULK INSERT 不接受存储过程中的变量文件路径?

为什么 BULK INSERT 不接受存储过程中的变量文件路径?

Susan Sarandon
发布: 2024-12-26 22:47:09
原创
302 人浏览过

Why Doesn't BULK INSERT Accept Variable File Paths in Stored Procedures?

使用存储过程批量插入:故障排除

在尝试使用存储过程批量插入数据时,开发人员遇到了语法错误。目标是将有效的 BULK INSERT 查询复制到过程中。以下是对该问题及其解决方案的分析。

该问题是由于尝试将文件名作为变量传递给存储过程中的 BULK INSERT 命令而引起的。不幸的是,这是 BULK INSERT 不支持的操作。

以下是使用变量尝试失败的示例:

DECLARE @filename VARCHAR(255)
SET @filename = 'e:-digit Commercial.csv'

BULK INSERT ZIPCodes
FROM @filename
WITH
登录后复制

相反,BULK INSERT 命令需要硬编码的文件路径。要解决此限制,请考虑将 BULK INSERT 语句构造为具有固定文件名的字符串,并将其作为动态 SQL 执行。

DECLARE @filepath NVARCHAR(500)
SET @filepath = N'e:-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,可以执行构造的语句,从而解决原始存储过程实现中遇到的语法错误。

以上是为什么 BULK INSERT 不接受存储过程中的变量文件路径?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板