下面是 BCP 语句的示例。 我不习惯使用 BCP,因此非常感谢您的帮助和坦诚
我也将它与格式文件一起使用。
如果我从 CMD 提示符执行,它工作正常,但从 SQL 执行,我收到错误。 BCP 语句全部位于一行,并且 SQL Server 代理作为本地系统运行。 SQL 服务器和脚本位于同一系统上。
我运行了 exec master..xp_fixeddrives C,45589 E,423686
我尝试输出到 C 和 E,结果相同
EXEC xp_cmdshell 'bcp "Select FILENAME, POLICYNUMBER, INSURED_DRAWER_100, POLICY_INFORMATION, DOCUMENTTYPE, DOCUMENTDATE, POLICYYEAR FROM data.dbo.max" queryout "E:\Storage\Export\Data\max.idx" -fmax-c.fmt -SSERVERNAME -T
这是格式文件rmax-c.fmt
10.0
7
1 SQLCHAR 0 255 "$#Y#$" 1 FILENAME
2 SQLCHAR 0 40 "" 2 POLICYNUMBER
3 SQLCHAR 0 40 "" 3 INSURED_DRAWER_100
4 SQLCHAR 0 40 "" 4 POLICY_INFORMATION
5 SQLCHAR 0 40 "" 5 DOCUMENTTYPE
6 SQLCHAR 0 40 "" 6 DOCUMENTDATE
7 SQLCHAR 0 8 "\r\n" 7 POLICYYEAR
由于本文中的格式化,格式文件的最后一列被截断,但除文档日期之外的每一列都会读取 SQL_Latin1_General_CP1_CI_AS
。
最佳答案
输出路径是否存在? BCP 在尝试创建文件之前不会创建文件夹。
在 BCP 调用之前尝试此操作:
EXEC xp_cmdshell 'MKDIR "E:\Storage\Export\Data\"'
关于sql - 无法打开 BCP 主机数据文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18619061/