我正在尝试将数据从'.dat'文件复制到sql server中的表 我在执行以下命令时遇到此错误:
declare @cmd varchar(100)
set @cmd = 'bcp dBFCLogging.dbo.TempBFCLogs in ' + '''D:\WorkArea\data.dat''' + ' -c -T'
exec xp_cmdshell @cmd
确切的错误讯息:
SQLState = S1000, NativeError = 0
Error = [Microsoft][SQL Server Native Client 10.0]Unable to open BCP host data-file
NULL
我运行了一个打印命令并检查了cmd变量,看起来没问题。
bcp dBFCLogging.dbo.TempBFCLogs in 'D:\WorkArea\data.dat' -c -T
我在数据库服务器上运行此命令,因此我将此文件放在该数据库服务器上的正确路径下。我读过可能存在许可问题。所以,我已经让用户'Everyone'对该文件夹结构以及文件具有读/执行访问权限,但在执行时仍会抛出此错误。 请帮忙!
答案 0 :(得分:0)
更改" D:\ WorkArea \ data.dat "到"D:\\WorkArea\\data.dat"
答案 1 :(得分:0)
如果在文件名周围加上引号,则需要使用双引号,而不是单引号。你的命令应该是:
declare @cmd varchar(100);
set @cmd = 'bcp dBFCLogging.dbo.TempBFCLogs in "D:\WorkArea\data.dat" -c -T';
exec xp_cmdshell @cmd;
根据数据文件中数据的格式化方式,可能还有其他问题。在某些情况下,您需要在格式文件中对此进行描述,并使用-f
选项在BCP命令中引用此格式文件。