Sql server SQL Server大容量插入失败(与网络相关)
我对SQL Server还相当陌生 我正在尝试使用SQL Server Management Studio(2005)中的命令将大容量插入到表中: 使用(FIELDTERMINATOR='|')从“c:\text.txt”大容量插入表1 我得到一个错误: Msg 4860,16级,状态1,第1行 无法批量加载。文件“c:\text.txt”不存在 我肯定这个文件确实存在Sql server SQL Server大容量插入失败(与网络相关),sql-server,bulkinsert,Sql Server,Bulkinsert,我对SQL Server还相当陌生 我正在尝试使用SQL Server Management Studio(2005)中的命令将大容量插入到表中: 使用(FIELDTERMINATOR='|')从“c:\text.txt”大容量插入表1 我得到一个错误: Msg 4860,16级,状态1,第1行 无法批量加载。文件“c:\text.txt”不存在 我肯定这个文件确实存在 我感觉它正在本地硬盘上寻找文件,而服务器就在那里。是这样吗?如果是,您通常如何解决此问题?(注意,在输入文本文件的位置时,我尝
我感觉它正在本地硬盘上寻找文件,而服务器就在那里。是这样吗?如果是,您通常如何解决此问题?(注意,在输入文本文件的位置时,我尝试指定电脑的网络地址,但出现了权限错误。此外,我事先知道我的公司不允许将文件放置在服务器上)。是的,它将在SQL server上查找文件本身 如果可以将网络驱动器映射到SQL server的C驱动器,则只需在运行大容量插入之前复制文件即可 如果您完全无法访问服务器的文件系统,则可以考虑执行以下操作:
- 编写一个程序,读取文本文件并将内容插入到具有文本字段的临时表中的单个记录中,可能使用存储过程
- 让程序执行将数据从临时表导出到SQL server本地文件系统上的文本文件中,并将其导出到运行SQL服务的帐户具有写入权限的文件夹中
- 让程序运行大容量插入命令,指定服务器上文本文件的路径
- 删除文本文件和临时表
bcp servername.dbname.tablename in c:\temp.txt -T -c
将选项卡分隔的文件(temp.txt)复制到指定的表中(假设该文件包含正确的列数)
我不确定这是否有帮助,但这是将数据从客户机文件移动到服务器表的唯一方法,而无需让服务器通过网络访问客户机上的数据文件。我同意文件在C驱动器上,而不是服务器驱动器上有问题 如果是权限问题,您是否尝试过在您的工作站上创建服务器确实具有读取权限的文件共享?可能类似于\YourWorkstation\SQLFile,然后授予每个人(或来宾,取决于您的网络权限设置)对它的读取权限
如果您无法在笔记本电脑上创建共享,或者由于某种原因无法授予共享权限,那么办公室中是否存在您确实有权访问的文件共享,并且SQL也可以从中读取?可能是NAS或“公共”网络文件夹?如果他可以通过远程机器在db中写入记录,为什么他还要复制BCP粘贴的文件以及所有这些?