全部,在这篇文章xp_cmdshell Query Length Too Large中,我设法使用xp_cmdshell获取了我遇到的查询大小限制问题。我写这么长的查询的原因是试图解决另一个问题,事实上bcp似乎将空字符串(从包含空字符串的字段的表)转换为某些编码字符('NUL'或'r',或者其他的东西)。这影响了我可以使用我导出的数据。我有的导出查询是
string strBcp = String.Format(
"declare @sql varchar(8000) " +
"select @sql = 'bcp \"SELECT * FROM [{0}]..[ivwTmpDrgDataView];\" ' +" +
"'queryout \"{1}\\DRGData.txt\" -c -t -T -S ' + @@servername " +
"exec master..xp_cmdshell @sql;",
strDatabase,
strDataDir);
这样可以正常工作,但在导出的文件中数据库值已转换
NULL -> Empty String (Which is fine!)
Empty String -> Some strange character
我可以用C#读取.txt文件然后重新编码 - 将我的'奇怪角色'转换回应该是什么的最佳方法是什么,空字符串?
感谢您的时间。
答案 0 :(得分:1)
这是设计的,如果bcp
将null和空字符串转换为相同的输出(假设是一个空字符串),那么以后就没有办法消除它们的歧义。
答案 1 :(得分:1)