【问题标题】:BCP Syntax Issues (pt2)BCP 语法问题 (pt2)
【发布时间】:2016-11-16 15:50:01
【问题描述】:

我正在尝试执行一个非常简单的 SQL 选择查询来归档,因为它位于托管在没有 SSIS 的 SQL Express 中的第 3 方供应商数据库上。

我已经编写了选择查询并测试了它在 SSMS 中运行,没有任何问题。

我做了一场噩梦,但是我试图让 BCP 在命令提示符下运行。我已经尝试从本地机器上运行,在网络驱动器上运行,甚至按照在线其他地方的建议将 .bat 文件添加到 SQL Server 的 tools/binn 目录中。

我现在得到的错误很快就闪现了,所以我必须在它关闭 cmd 窗口之前快速截屏,如下所示:

我也尝试过从服务器上的计划任务运行,但这会在服务器错误日志中产生不同的错误代码。

这是更广泛项目中的最后一部分,我对 .bat 文件没有太多经验,因此非常感谢任何建议。

bat 文件如下所示(密码替换为 XX - 请原谅长查询。我需要创建一个文件,其中包含确切数量的部分,以便导入 inot 第三方系统工作,因此添加数字以便轻松计算字段)。

BCP "SET NOCOUNT ON; SELECT '|' + '|' + '|' + '|' + '|' + '|' + '|' + '|' + '|' + '|' + '|' + '|' + '|' + '|' + [sender_reference] + '|' + '|' + '|' + '|' + (REPLACE(CONVERT(CHAR(15), manifest_dt, 103),' ',' - ')) + '|'  + '|' + '|' + '|' + '|' + '|' + '|' + '|' + '|' + '|' + '|' + '|' + '|' + '|' + '|' + [airwaybill_num] + '|' + '|' + '|' + '|' + '|' + '|'FROM airwaybills_history WHERE manifest_dt between (SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE()))) and (GETDATE()) + '23:59:59''" QUERYOUT \\carrier\test-file\test.OUT -S CARRIER\DHLEASYSHIP -U xx  -P xx -c 

【问题讨论】:

  • 你的批处理文件叫什么名字?
  • 试着让一切都在同一条线上?请按原样发布您的批处理文件...
  • 谢谢...已经用最新版本更新了代码,除了密码和用户名之外,一切都是一样的。
  • 批处理文件调用:dhl-get-shipments

标签: sql-server batch-file cmd bcp


【解决方案1】:

我刚刚在我的测试平台上运行了以下命令,没有出现任何问题。创建了一个C:\Temp\queryout.bat,内容如下(全部在一行上):

BCP "SELECT*FROM INFORMATION_SCHEMA.TABLES" QUERYOUT "C:\temp\inf_schema.out" -S my_server\my_instance -T -c -d my_database

它使用-T,对你来说就是-U xx -P yy。还有my_...,你知道怎么处理这些。

这对你有用吗?如果是这样,您可以修改它以查看它是否适合您。如果没有,错误是什么?

另外,如果您想真正看到错误,请从cmd.exe 运行。

【讨论】:

  • 感谢您的指点。我现在在 cmd.exe 中收到关于 BCP 的错误:未知选项 d。这是在一行上使用上面的代码,只是使用我们的身份验证凭据而不是 -t
  • @AshBash -d 用于指定应在其上运行查询的数据库。如果省略,则必须在查询中指定数据库(如SELECT*FROM my_database.INFORMATION_SCHEMA.TABLES)。
  • 这也是我以前也使用过的,所以不知道为什么我现在会遇到错误。我将尝试在 SQL 查询中指定并完成消除过程...将返回反馈。
  • 错误正在改善!我认为现在是权限:SQLState = S1000, NativeError = 0 Error = [Microsoft][SQL Server Native Client 10.0]Unable to open BCP host data-file
  • @AshBash 如果您像 here 一样尝试来自 SSMS 的 BCP 会怎样(将 -T 替换为 -U xx -P yy)?那是我的健全性检查脚本。还要确保您正在使用的帐户在C:\Temp具有写入权限
猜你喜欢
  • 1970-01-01
  • 2014-02-20
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 2011-05-17
  • 1970-01-01
相关资源
最近更新 更多