将数据从SQL Server Express导出为CSV(需要引用和转义)

Xac*_*ner 36 ruby sql sql-server csv export

我花了两天的时间尝试从SQL服务器安装中导出包含用户输入数据的大文本字段的75,000行表.此数据包含每个简单的ascii字符,制表符和换行符.我需要导出引用每个字段的CSV,并且引用列中的引号被正确转义("").

以下是我到目前为止所尝试的内容: - 从Management Studio右键单击数据库并导出到Excel:由于字段太长而失败. - 数据从Management Studio导出到平面文件,带有"文本分隔符和逗号分隔 - 完全无用,不会在字段内转义,使文件完全不明确. - 命令行中的BCP - 也不支持引用字段.

我需要使用FasterCSV ruby​​库导入.它不允许引号分隔符是非标准的ascii字符或多个字符.它也不允许\n或\ r在未加引号的列中.

任何帮助是极大的赞赏.

Rob*_*oun 45

可以办到!但是,您必须专门配置SSMS以使用引用输出,因为出于某种原因,它不是默认值.

在要保存的查询窗口中,转到查询 - >查询选项...

选中"保存.csv结果时引用包含列表分隔符的字符串"框.

启用引用的csv输出

然后

select 'apple,banana,cookie' as col1,1324 as col2,'one two three' as col3,'a,b,"c",d' as col4
Run Code Online (Sandbox Code Playgroud)

将输出

col1,col2,col3,col4
"apple,banana,cookie",1324,one two three,"a,b,""c"",d"
Run Code Online (Sandbox Code Playgroud)

这就是我们都想要的.

  • 这不适用于包含换行符的文本字段. (10认同)
  • 请注意,此解决方案适用于特定查询.您可以在工具>选项>查询结果> SQL Server>结果到网格中设置所有查询的默认值>在保存.csv结果时引用包含列表分隔符的字符串 (5认同)
  • 这看起来很好,但它并不总是转义双引号(```).这个答案中的情况很好,但我试过`SELECT'"'```SELECT'a"'`,两者都是在这些情况下,使用SQL Server Management Studio 2014逐字输出值.这绝对是一个有用的答案,但我对它进行了低估,因为它仅在某些情况下有效,因此可能会对依赖它的人造成问题. (2认同)

ckp*_*r02 25

我一直试图解决这个问题.不确定这是否适合你,因为你的桌子比我的大得多,但这就是我一时兴起的事情:

  1. 我通过做一个SELECT *声明把Express拉到桌子上
  2. 只需选择生成的行和Ctrl+C
  3. 打开Excel
  4. 突出显示我粘贴的表格的列数
  5. 粘贴了,它已经工作了!
  6. 现在只需将Excel导出为CSV并完成.

我知道这可能听起来很愚蠢,但它确实对我有用.

  • 我想补充一点,我希望微软的工程师每天都会受到抨击. (15认同)
  • 这个答案真的应该被赞成.我确实比OP更震撼.我在远程桌面上创建了170 K行的表,因为生产服务器没有安装Excel或其他任何东西.所以我进入了来宾RDP系统,运行SQL,复制了行,然后回到运行RDP会话的主机系统并粘贴到OpenOffice中.通过RDP流式传输剪贴板数据大约需要10分钟,我不得不将OpenOffice拖动一段时间以便重新绘制它,但它确实可以工作并生成转义数据.伤心但真实. (5认同)
  • 遗憾的是,这并没有被标记为答案,因为这绝对有效.在我的情况下,从SSMS导出并没有正确转义带换行符的字符串.在Excel中复制/粘贴然后导出是答案,因为它更好地处理CSV. (3认同)
  • 这是完美的解决方案,这种方式垃圾字符的所有问题都消失了,不知道为什么通过sql server导出导致特殊字符的错误解释.谢谢你ckpepper02 (2认同)

小智 8

最简单的方法:

使用Excel数据导入工具

  • 转到数据>从其他来源>从Sql Server
  • 填写服务器名称等.
  • 选择要导入的表或视图.

然后将导入的数据保存到CSV文件.如果要导出查询,请将查询保存为视图

  • 我有一堆数据,包括引号,换行符,奇怪的字符等.这是有效的答案.谢谢.(但应该注意的是,我必须将我的列选择到newTable中,以便excel可以看到表而不是结果集) (2认同)

mas*_*ani 0

也许下面的链接可以帮助您:

使用 SQL Server 2005 Express 导入/导出数据

  • 不幸的是这没有帮助。SQL Server Express 附带的所有工具都会创建无效的 CSV。 (3认同)