Pet*_*ore 66 sql-server csv ssms
我有一个查询,我在SQL Server Management Studio中运行(连接到SQL Server 2005数据库).我想以CSV格式导出数据.不想要CSV格式,你只需在每一列之间加一个逗号,但是"真正的"CSV格式,你可以在字符串中加上引号.这样,您可以导出包含逗号或引号的数据.
我看到的所有例子都局限于想要的格式.我无法弄清楚引用字符串的选项在哪里.
如果SSMS真的无法实现这一基本功能,那么还有其他工具可以轻松完成吗?每次我需要数据转储时,我都不想编写C#程序.
Mat*_*ton 115
在SSMS 2012中,有一个选项,在工具 - >选项 - >查询结果 - > SQL Server - >结果到网格中,它被称为"在保存.csv结果时引用包含列表分隔符的字符串".我不知道这种选择存在多久,但我对两件事情感到困惑:
它只是无视相信默认行为是CSV导出无法正确导入.我注意到Excel做了同样的事情,我将不得不去看看是否有一个选项.
与此同时,感谢我的同事在我咆哮关于CSV导出器完全无用的时候向我指出了这个奇怪的功能,这是我发现的关于它的最佳链接,所以我想我放了这里的知识是为了未来的搜索者的利益.
UPDATE
Joe*_*orn 11
我正常的解决方法是将其构建到查询中:
SELECT '"' + REPLACE(CAST(column AS NVARCHAR(4000)), '"', '""') + '"' AS Header, ... FROM ...
Run Code Online (Sandbox Code Playgroud)
您可以将其构建为用户定义的函数,以使其更容易,但您必须为每种数据类型构建单独的函数.
令人遗憾的是,该选项在令人困惑的状态下可用,但并非完全可操作。以下至少是有效的。
text qualifier
双引号你应该很高兴去!
这些设置的不同组合可能会导致输出结果不正确或部分数据.这是因为微软认为解决这些问题并不重要.我只是解释了将结果发送到文件时CSV文件会发生什么.
要获得良好的结果,请执行以下操作:
打开新的查询窗口(新选项卡/会话)...如果不这样,下面的配置将丢失并重新设置为默认值
编写查询以处理引用中的引用,并将所有字符串数据类型包装在引号中.还要注意,不同的DBMS和编程语言语法接受转义双引号的不同语法(如果使用此输出作为另一个系统的输入).一些使用\"
.一些使用""
.XML使用"
; 可能是微软选择忽略此功能的原因,因此他们不必处理这些争论.
..如果新系统的逃逸顺序是""
.
SELECT '"' + REPLACE(CAST(column1 AS VARCHAR(MAX)), '"', '""') + '"' FROM table1
Run Code Online (Sandbox Code Playgroud)
..如果新系统的逃逸顺序是\"
.
SELECT '"' + REPLACE(CAST(column1 AS VARCHAR(MAX)), '"', '\"') + '"' FROM table1
Run Code Online (Sandbox Code Playgroud)
组态:
选中"查询选项">"结果">"复制或保存结果时包括列标题"
查询选项>结果>"在保存.csv结果时引用包含列表分隔符的字符串" - BROKEN; 不使用!
查询选项>结果>其他未选中
查询选项>结果>文本>逗号分隔(右上角设置)
选中查询选项>结果>文本>"在结果集中包括列标题"
查询选项>结果>文本>其他未选中
查询选项>结果>文本>"每列中显示的最大字符数" - 设置为最大长度,以便不会截断字符串.
查询>结果到文件(这是所有3个选项之间的切换)
执行查询(F5)
提示报告的文件名
打开文件查看结果
注意:如果您需要定期执行此操作,最好只开发一个程序,以.NET或Java或任何您熟悉的语言为您执行此操作.否则你很有可能犯错误.在定义从SQL Server导出之前,请非常了解要导入的系统的语法.
归档时间: |
|
查看次数: |
72022 次 |
最近记录: |