我需要使用 SQL Server 2000 的 BCP 实用程序导出一些数据。有时我的数据包含字符,例如和 ,我需要用作列和行终止符。我如何让 BCP 在输出数据时转义它用作终止符的字符,以便我可以在另一个程序中实际导入数据?
例如,我的一个列是文本数据,包括制表符和换行符。 BCP 只是按原样导出它们,而我试图导入它们的程序会感到困惑,因为数据在一行的中间结束和/或一行无缘无故地包含额外的列。
这似乎是一个非常非常非常包含在数据导出器中的基本功能,但命令行选项似乎都没有提到它。 (为什么它不只是默认设置超出了我的范围。)我错过了什么吗?
完全同意你的看法:逃避应该是一种选择。 “你不能有带有制表符或换行符的数据”是我听过的最愚蠢的事情。
这是一个可能的解决方案:
看看这篇文章了解更多信息.
如果将它们放在双引号之间,则可以使用由多个字符组成的分隔符:
bcp MY_TABLE out C:\MY_FILE.txt -S SERVER_IP -d DB_NAME -U MY_USER -P MY_PASSWORD -w -t "&#)^@" -r ">~+!"
在这里找到解决方案.
如果您的表在两边都相同,您可以使用本机格式,它将以处理控制字符的二进制数据库格式导出。只需添加
-n
开关而不是 -c
或 -w
:
bcp MyTable out C:\temp\MyTable.tsv -S SERVER -d Database -U USER -n
我也遇到了同样的问题,找了很久才找到解决办法。 我从一位 BCP 大师那里找到了这个,听起来很合理。 也许你也想尝试一下。
格式文件的详细信息和设计: http://msdn.microsoft.com/en-us/library/aa173859%28SQL.80%29.aspx
一般来说,我可以推荐这些链接来让你了解 BCP 问题和解决方案: http://groups.google.co.uk/groups?q=lindawie+format+file
致以诚挚的问候