新创建的CSV文件在批量插入过程中有错误



我想寻求您的帮助。

我创建了一个程序,该程序将从CSV文件中检索数据,读取选定的行,然后与选择的数据创建一个CSV文件。之后,系统将将数据从新创建的文件上传到数据库,该文件结束了事务。

问题是在执行批量插入时,数据库抛出和错误

operating system error code 5(failed to retrieve text for this error. reason: 15105)

研究后,我发现这是一个许可问题,还是?

这是我到目前为止所做的。

ALTER DATABASE training SET TRUSTWORTHY ON

我还在我的批量插入物上添加了 FIRE_TRIGGERS

请注意,我正在使用SA帐户,我想将其上传到本地数据库(部署将在我们的实时服务器上)

也不要使用我创建的存储过程从SQL插入数据。

任何建议都将受到赞赏。

预先感谢!

,因此此错误确实是@Sandeep Rawat所述的权限错误,如果可以的话,您可以使用他的答案。我想与您分享如果您想在系统中执行此操作。

首先,我想对一些缺乏点的缺乏,这可能是至关重要的,对于回答这个问题至关重要。1)我忘了提到,系统是创建并保存在我的计算机中的,该计算机具有域和管理员,我的用户帐户需要管理员访问才能更改任何内容。(因此,再次是许可错误)P>

2)当我尝试从用户帐户加载数据时,我创建的存储过程不起作用。我尝试使用以下代码使用存储过程

BULK INSERT temptable
    FROM 'C:UsersMyUserDocumentsVisual Studio 2010ProjectsTestUploaderTestUploaderbinDebugMyCSV.csv'
    WITH
    (
    FIELDTERMINATOR = '','',  
    ROWTERMINATOR = ''n'',
    MAXERRORS = 100,
    FIRSTROW = 2
    )

它不起作用,它给出了问题中所述的错误。

所以这是我所做的。

1)我导入system.security.accesscontrol

Imports System.Security.AccessControl

2)我在C下创建了一个文件夹:

Dim folderName As String
folderName = "C:CSVUPLOADS"
'check if folder exists, if not, create folder
           If (Not System.IO.Directory.Exists(folderName)) Then
               System.IO.Directory.CreateDirectory(folderName)
           End If

3)授予对文件夹的访问

 Dim FolderInfo As IO.DirectoryInfo = New IO.DirectoryInfo(folderName)
                Dim FolderAcl As New DirectorySecurity
                FolderAcl.AddAccessRule(New FileSystemAccessRule(UserAccount, FileSystemRights.Modify, InheritanceFlags.ContainerInherit Or InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow))
                FolderInfo.SetAccessControl(FolderAcl)

4)然后我从原始位置重新创建了文件,然后将其放入新文件夹中。

 fileName = "dataUpload.csv"
fileName = folderName & fileName
'Create CSV file
                File.Create(fileName).Dispose()

在我上面创建的步骤之后,我现在也可以阅读CSV文件,即使在部署环境中也可以阅读。

这些步骤的优点是,您不必在某些文件夹中添加权限。

缺点是,我必须创建一个可以创建,复制和找到我需要到另一个位置的CSV文件的系统。

请注意,我为此创建了一个系统,而不仅仅是一个SQL脚本,因此上述代码不完整。上面的代码仅讨论新文件夹的创建和新的CSV文件,该文件可以由SQL读取,而无需您手动授予该文件。因此,如果您选择执行此操作,则必须研究如何将数据从CSV文件获取到新的CSV文件,调用存储过程,然后进行批量插入。

p.s-我不是将此标记为答案,而只是作为选项,因为真正的答案是权限。

最新更新