Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server大容量插入失败(与网络相关)_Sql Server_Bulkinsert - Fatal编程技术网

Sql server SQL Server大容量插入失败(与网络相关)

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 Management Studio(2005)中的命令将大容量插入到表中:

使用(FIELDTERMINATOR='|')从“c:\text.txt”大容量插入表1

我得到一个错误:

Msg 4860,16级,状态1,第1行 无法批量加载。文件“c:\text.txt”不存在

我肯定这个文件确实存在


我感觉它正在本地硬盘上寻找文件,而服务器就在那里。是这样吗?如果是,您通常如何解决此问题?(注意,在输入文本文件的位置时,我尝试指定电脑的网络地址,但出现了权限错误。此外,我事先知道我的公司不允许将文件放置在服务器上)。

是的,它将在SQL server上查找文件本身

如果可以将网络驱动器映射到SQL server的C驱动器,则只需在运行大容量插入之前复制文件即可

如果您完全无法访问服务器的文件系统,则可以考虑执行以下操作:

  • 编写一个程序,读取文本文件并将内容插入到具有文本字段的临时表中的单个记录中,可能使用存储过程
  • 让程序执行将数据从临时表导出到SQL server本地文件系统上的文本文件中,并将其导出到运行SQL服务的帐户具有写入权限的文件夹中
  • 让程序运行大容量插入命令,指定服务器上文本文件的路径
  • 删除文本文件和临时表

您是否在计算机上创建了服务器可以看到的共享驱动器?如果是这样,那么您只需要引用包含您的机器名的路径,而不是C:

SQL Server没有从客户端读取数据的SQL语句(正如其他海报所指出的)。其他RDBMS产品也实现了这一点(例如,Postgres COPY语句允许您在服务器上指定一个文件,或者在客户端指定由db connectivity library读取的客户端文件)

您可以使用bcp命令行程序将数据从客户机上的文件移动到SQL Server上的表中

bcp允许您将数据从本地文件复制到服务器上的表中,或从服务器上的表(或选择查询)复制到本地文件中。例如:

bcp servername.dbname.tablename in c:\temp.txt -T -c
将选项卡分隔的文件(temp.txt)复制到指定的表中(假设该文件包含正确的列数)


我不确定这是否有帮助,但这是将数据从客户机文件移动到服务器表的唯一方法,而无需让服务器通过网络访问客户机上的数据文件。

我同意文件在C驱动器上,而不是服务器驱动器上有问题

如果是权限问题,您是否尝试过在您的工作站上创建服务器确实具有读取权限的文件共享?可能类似于\YourWorkstation\SQLFile,然后授予每个人(或来宾,取决于您的网络权限设置)对它的读取权限


如果您无法在笔记本电脑上创建共享,或者由于某种原因无法授予共享权限,那么办公室中是否存在您确实有权访问的文件共享,并且SQL也可以从中读取?可能是NAS或“公共”网络文件夹?

如果他可以通过远程机器在db中写入记录,为什么他还要复制BCP粘贴的文件以及所有这些?