我已经经历了很多其他问题而他们还没有回答具体问题。我理解它期望文件出现在SQL服务器中的错误。
我已在笔记本电脑上安装了SQL Server 2012,并尝试从本地驱动器批量插入CSV文件,但我收到错误
Msg 4801, Level 19, state 1, Line 1
Cannot bulk load because the file could not be opened
在看了几个答案后,我明白这是一个权限问题,但我不知道如何解决它。我在Windows 10上并使用SQL Server express 2012
答案 0 :(得分:1)
SQL Server需要CSV文件所在文件夹的权限。
您需要授予该文件夹(或您在SQL Server安装中创建的任何帐户)上的NT Service\MSSQLSERVER
帐户的权限。如果在此之后仍然无法运行,请确保SQL Server对文件本身具有权限。如果CSV文件是在您授予SQL Server权限的目录之外的目录中创建的,则会遇到该问题。
答案 1 :(得分:0)
将您的CSV文件放在C盘以外(尝试使用D,E .....)使用以下BULK INSERT语句,您可以直接从CSV文件将批量数据插入数据库。最简单的BULK INSERT查询版本如下:
BULK INSERT dbo.YourDBTableName
FROM 'D:\YourFileName.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
或者您可以处理事务和回滚,可以像这样使用try catch块:
EGIN TRANSACTION
BEGIN TRY
BULK INSERT dbo.YourDBTableName
FROM 'D:\FolderName\YourFileName.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
ROWS_PER_BATCH = 10000,
TABLOCK
)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH
如果两种方法中的一种顺利,那么您可能会遇到以下两个问题:
另一个重要的事情是,尝试以管理员运行SQL Server 2012 Management Studio(右键单击图标 - >以管理员身份运行)