SQL Server 2005和2008中BCP命令输出不同?

4

我已经在两个不同的设置上执行了两个相同的bcp命令,使用的是相同的数据。

机器A = 运行SQL Server 2008的Windows Vista计算机

机器B = 运行SQL Server 2005的Windows Server 2003计算机

bcp命令的输出文本文件是不同的!首先,机器B没有在文本文件开头添加列名,并且似乎对换行符处理有误。每一行应该用换行符分隔,但它似乎是在两个字段后面插入换行符?!

bcp命令如下:

bcp DBn_Mitor..TI40 out C:\prepTI4O.txt -c -T -t"\",\"" -r"\"\n\"" -S SQLServer01 -E

这里发生了什么?SQL Server 2005和2008有什么不同,导致bcp的工作方式不同?

愚蠢的问题,你确定这些表具有完全相同的模式吗?数据是否有任何不同(可能是换行符)? - C. Ross
@C.Ross - 你好,是的,我非常确定,因为我从同一个Access数据库中导出了相同的表格 - 我已经检查过列数和行数,只是为了快速测试我的理智,结果完全一样! - Abs
@abs:我认为C.Ross指的是SQL Server表定义、排序等方面。MS Access与bcp有什么关系? - gbn
@Gbn,我从MS Access导入到SQL Server作为视图。然后使用BCP将其导出。 - Abs
我认为问题在于每个字段在访问中的设置方式,尽管它们是完全相同的表。我刚刚注意到,在我的一个字段中,日期的格式不同!也许我需要一种方法,在创建视图时将所有字段都设置为文本。这是否可能?也许这应该是另一个问题... - Abs
你能否使用机器A上的bcp来提取机器B上的数据?反之亦然。这可以缩小范围,看看服务器数据是否不同或bcp行为是否不同。我猜测是服务器数据上的某些问题。 此外,比较机器A和B上sp_help TI40的结果将有所帮助。确保它们逐字符完全相同。 - Michael J Swart
2个回答

0

BCP是一种SQL工具,我相信2008版本会有不同的版本。如果您正在使用BCP在不同版本之间进行导出/导入,则应该使用RAW而不是Native。

从Access到SQL,最好的选择是使用格式文件-有关详细信息,请参阅MSDN。

http://msdn.microsoft.com/en-us/library/ms162802.aspx


0
服务器是否曾经升级过,或者安装了其他的DBMS工具?也就是说,您是否运行了正确的bcp.exe?
我曾经遇到过这种情况,在查找%PATH%变量时发现的"bcp.exe"不是您期望运行的那个...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接