这些设置的不同组合可能导致输出结果不正确或部分数据。这是因为Microsoft认为解决这些问题不够重要。我只是在将结果发送到文件时解释CSV文件会发生什么情况。
为了获得良好的结果,请执行以下操作:
打开新的查询窗口(新标签页/会话)...如果不这样做,则下面的配置将丢失并恢复为默认值
编写查询以处理引号内的引号,并将所有字符串数据类型都包装在引号中。还应注意,不同的DBMS和编程语言语法对于转义的双引号接受不同的语法(如果将此输出用作另一个系统的输入)。一些用\"
。一些用""
。XML使用"
;。可能是Microsoft选择忽略此功能的原因,因此他们不必处理这些参数。
..如果新系统的转义序列为""
。
SELECT '"' + REPLACE(CAST(column1 AS VARCHAR(MAX)), '"', '""') + '"' FROM table1
..如果新系统的转义序列为\"
。
SELECT '"' + REPLACE(CAST(column1 AS VARCHAR(MAX)), '"', '\"') + '"' FROM table1
组态:
查询选项>结果>“复制或保存结果时包括列标题”已选中
查询选项>结果>“保存.csv结果时引用包含列表分隔符的字符串”-损坏;不使用!
查询选项>结果>其他未选中
查询选项>结果>文本>以逗号分隔(在右上角设置)
查询选项>结果>文本>“在结果集中包含列标题”已选中
查询选项>结果>文本>其他未选中
查询选项>结果>文本>“每列中显示的最大字符数”-设置为最大长度,这样字符串就不会被截断。
查询>结果到文件(这是所有3个选项之间的切换)
执行查询(F5)
提示输入报告的文件名
打开文件查看结果
注意:如果需要定期执行此操作,最好只开发一个程序以.NET或Java或任何您喜欢的语言为您执行此操作。否则,您极有可能犯错。然后,在定义从SQL Server导出之前,要非常了解要导入的系统的语法。