【问题标题】:Unprintable characters in bcp.exe outputbcp.exe 输出中的不可打印字符
【发布时间】:2012-12-18 13:25:00
【问题描述】:

我想要的是使用批处理作业转储三个 MSSQL Server 表。我四处搜索,发现 bcp 强烈推荐用于此类工作。查看文档,似乎我想要转储整个表,因为我想要所有数据,而不是子集。

我正在使用以下命令从第一个表中提取数据。

bcp glmaster out d:\ftp_root\data_xfer\glmaster.txt -n -d mu_live -t"," -S munis -U <user> -P <pwd>

使用 -n 或 -n 和 -C 的各种组合,并且 .csv 文件中出现虚假的、不可打印的字符,例如带有变音符号或倒置的 y,镜像反转的“L”。除了这些字符之外,还有实际数据,它们似乎位于每列的末尾。

从 SQL Server 表中提取干净的 .csv 数据以便可以从批处理作业运行的最佳方法是什么?

【问题讨论】:

  • 您可以使用 Powershell,例如:billfellows.blogspot.com/2011/03/…
  • 这是一个很好的例子,但我想尽可能简单地做到这一点。如果我必须学习 PowerShell,我会,但更愿意使用其他实用程序。
  • 数据可能已经很干净了:使用-n 获得的本机格式是binary format,仅用于bcp.exe,因此某些字符无法读取也就不足为奇了。您是否尝试过重新导入它?如果您希望脚本与其他工具一起使用,那么根据documentation,字符格式将是更好的选择,即-c(如果您没有 Unicode 数据)或-w(如果有)。
  • 请回答您的评论。做到了。

标签: sql-server-2008 csv bcp


【解决方案1】:

数据可能已经很干净了:使用 -n 获得的本机格式是 binary format,仅用于 bcp.exe,因此某些字符无法读取也就不足为奇了。

如果您希望脚本与其他工具一起使用,那么根据documentation,字符格式将是更好的选择,即-c(如果您没有 Unicode 数据)或-w(如果您有)。

【讨论】:

  • 感谢您回答这个问题。此外,您可能希望编辑此答案以添加更多信息(对于其他查看者)。该信息将是我发现的其他信息。如果您指定 -c (顺便说一句,效果很好),同时指定 -t 会产生可变长度的数据。一旦我接受了 -c 给了我制表符分隔并停止使用 -t"," 的事实,我就可以使用 sed 将 \t 替换为 |。
  • @octopusgrabbus 好吧,既然你已经添加了这条评论,信息已经在这里了:) 我已经编辑了问题标题以更准确地反映你的问题描述。
  • 听起来不错。我很欣赏这个答案,因为这就像 Marblehead 的黎明。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-19
  • 1970-01-01
相关资源
最近更新 更多