SQL Server将存储过程结果导出为CSV文件,保持char(9)格式
我在将存储过程的结果导出到csv文件并将结果保留为9个字符串时遇到问题。存储过程的结果是一个简单的单列输出,在SSMS中执行时看起来很好,但是返回csv中具有前导零的返回值时没有返回零。table列的类型是SQL Server将存储过程结果导出为CSV文件,保持char(9)格式,sql,sql-server,tsql,stored-procedures,Sql,Sql Server,Tsql,Stored Procedures,我在将存储过程的结果导出到csv文件并将结果保留为9个字符串时遇到问题。存储过程的结果是一个简单的单列输出,在SSMS中执行时看起来很好,但是返回csv中具有前导零的返回值时没有返回零。table列的类型是varchar(13),我做了一次转换,试图避免前导零被删除,但没有成功 以下是存储过程: SELECT DISTINCT convert(char(8),n.NIIN) FROM IMMS_ELEC.dbo.NIINList n 下面是我正在使用的简单BCP脚本: DECLARE @str
varchar(13)
,我做了一次转换,试图避免前导零被删除,但没有成功
以下是存储过程:
SELECT DISTINCT
convert(char(8),n.NIIN)
FROM IMMS_ELEC.dbo.NIINList n
下面是我正在使用的简单BCP脚本:
DECLARE @string AS NVARCHAR(4000)
SELECT @string = 'BCP "exec CPLINK_Dev.dbo.spSelectLOG_NiinDistinct"
QUERYOUT:\data.csv -c -T -t'
exec master.dbo.xp_cmdshell @string
Excel喜欢认为它比您更了解如何格式化数据。。。这里有一个技巧,你可以用来智取它。打开一个新的电子表格,选择所有单元格并将类型更改为文本(从常规),然后从记事本(或SSMS)复制数据,将其粘贴到Excel中,如果需要,则使用文本到列。。。Excel应该停止干扰你的格式
您也可以对从Excel导入数据执行同样的操作,但我发现第一种方法更有效,您也可以使用它直接从SSMS网格结果中复制和粘贴。尝试从IMMS_ELEC.dbo.NIINList n中选择DISTINCT'''+convert(char(8),n.NIIN)+''。如果你在任何一方添加一个引号,CSV应该将其视为文本并保持前导零。我尝试过这样做,但结果是一样的。你用什么程序打开CSV?如果你用记事本打开它,前导的零在那里吗?Excel将通过将它们转换为numbers@Sparky,如果我在记事本++中打开它,我会得到预期的9个字符的输出。如果我在Excel中打开它,前导的零将被删除。有趣。这意味着问题不在SQL输出中,而在Excel中。尝试在前面添加一个引号,看看是否允许Excel以文本形式查看它。。。