为什么从我的SQL Server导出中删除随机字符?

时间:2016-08-24 12:17:09

标签: sql-server csv export

我正在使用MS SQL Server 2008生成一个'〜'分隔的数据集。我的查询输出将保存为csv文件,并在SQL Server设置中设置此自定义分隔符。问题是,随机字符正在被删除。

如果我将结果运行到文本',则输出正常。但是,如果我将结果运行到文件',则随机字符将被替换为单个空格。例如,我在其中一个字段中的一个条目是“' North'”,这对文本'的结果很好。输出,但显示为' ORTH'在'结果到文件'。同样,我的一些分隔符已经丢失:例如' 1〜1〜1〜1〜1〜1'正在经历“1~1 1~1~1~1”。

我很乐意将结果复制并粘贴到文字'输出到记事本并自己保存为csv,但遗憾的是它不会让我复制多行(我的数据集很大)。

如果有人有任何想法,绝望的想法。非常感谢。

更新:我无法让我的代码在导出向导中工作,因为我在非常严格的防火墙内工作,所以无法访问SSIS。有没有人对错误发生的原因有任何想法?

2 个答案:

答案 0 :(得分:1)

正如评论中所提到的,使用SSMS导出数据充满了问题,通常是截断长字符串和添加随机回车等问题。最好的选择是使用am SSIS任务,特别是如果你想多次运行这个工作。但是,有时使用SQL导出数据向导同样简单。右键单击数据所在的数据库,选择 Tasks ,然后选择导出数据... 并按照向导进行操作。

如果由于某种原因未使用您正在使用的SQL,则可以将其放入存储过程中。例如,假设您的查询非常简单:

SELECT Column1, Column2, Column3
FROM MyTable

你可以把它放到这样的存储过程中:

CREATE PROCEDURE GetMyData
AS    

SELECT Column1, Column2, Column3
FROM MyTable

这意味着查询存储在您的数据库中,因此您不需要.sql文件或在每次需要时将其粘贴到SSMS中。

现在您运行的查询就是这样:

EXEC GetMyData

答案 1 :(得分:0)

除了快速检查之外,我从不使用这些结果。如评论所述,最好运行导出向导。我建议更进一步,使用SSIS设计器来创建该包。将来维护和构建将更容易。

以下是一个包​​含其他优秀SSIS内容的网站上的视频教程: https://www.youtube.com/watch?v=VCdPzdD-boQ

这是一个很好的非视频教程: http://knowlton-group.com/using-ssis-to-export-data-to-flat-files/

一个用于管道分隔,另一个用于逗号,但在两种情况下,分隔符都可以更改为〜