我需要使用SQL Server 2000的BCP实用程序导出一些数据。有时我的数据包含我需要用作列和行终止符的字符,例如\ t和\ n。如何让BCP在输出数据时将其用作终结符的字符转义,以便我可以在其他程序中实际导入数据?
例如,我的一个列是文本数据,包括标签和换行符。 BCP只是按原样导出它们,我试图导入它们的程序变得混乱,因为数据在行的中间结束和/或行包含额外的列,没有明显的原因。
这似乎是一个非常非常非常的基本函数,可以包含在数据导出器中,但the command-line options似乎都没有提到它。 (为什么它不会只是默认值超出我。)我错过了什么?
答案 0 :(得分:8)
完全同意你的观点:逃避应该是一种选择。 “你不能拥有标签或换行符的数据”是我听过的最愚蠢的事情。
这是一个可能的解决方案:
答案 1 :(得分:4)
如果您将它们放在双引号之间,则可以使用由多个字符组成的分隔符:
bcp MY_TABLE out C:\MY_FILE.txt -S SERVER_IP -d DB_NAME -U MY_USER -P MY_PASSWORD -w -t "&#)^@" -r ">~+!"
找到解决方案here。
答案 2 :(得分:-2)
我有同样的问题,并且搜索了很长时间才找到解决方案。 我从BCP主人那里找到了这个,听起来很合理。 也许你也想尝试一下。
格式化文件详情&设计: http://msdn.microsoft.com/en-us/library/aa173859%28SQL.80%29.aspx
通常我可以建议这些链接来了解BCP问题和解决方案: http://groups.google.co.uk/groups?q=lindawie+format+file
祝你好运
答案 3 :(得分:-7)
您不能拥有包含制表符和新行的数据,其中包含制表符和换行符分隔符。这没有道理。转义无效,因为选项卡是一个选项卡。我们不是在这里谈论c#字符串处理。
我要做的是使用|
和||/n
等different terminators,或使用format file