【发布时间】:2015-11-05 00:19:17
【问题描述】:
我正在从 SQL Server 2008 导出到 .csv,以便人们可以在 Excel 中轻松使用它。我正在使用 SSIS 2008。否则我只会导出到 Excel。它大约有 50 列,500K 行,所以 25M 记录。问题是其中大约 40 条记录的数据中有 ,,(记录不是列)我添加了文本限定符以避免我的列被弄乱,但这增加了 50M " 标记或大约 30 MB(20% ) 到我的输出文件。我知道我可以在 SQL Server 2008 中进行某种类型的替换,但我觉得这会大大减慢速度。
有没有办法只为带有, 的项目添加文本限定符?
尽管考虑到它仍然需要检查每条记录,所以看来我要么放慢我的过程,要么用 185MB 的 Excel 文件搞砸最终用户。
更多信息:数据源是一个存储过程,大约需要四分钟来运行所有使用的列 (SQL Server 2008)。目标是平面文件,用 " 文本限定符分隔逗号 (SSIS 2008)。
【问题讨论】:
-
如果记录仅在某些列中,您可以在连接管理器的“高级”页面中单独关闭每列的文本限定符。遗憾的是,我认为没有办法仅在需要它的记录上指定限定符。也许正如 pnuts 所说,制表符分隔的格式是要走的路。如果任何字段有选项卡,您可以在通过的过程中用空格替换它们。 (我认为,30MB 在宏伟的计划中真的很重要吗?一旦用户将其导入 Excel 并将其保存为 Excel 文件,它就会变得更小,我认为,现在 30MB 似乎并不多。 ..)
-
@MattGibson 我同意,30 MB 看起来并不多,但我正在从“旧”方法转换过来,所以当他们看到文件大小从 140MB 跳到 170MB 并打开“慢一点”他们会质疑我。我将采用在有问题的列上简单地添加文本限定符的方法。谢谢大家!
标签: excel sql-server-2008 ssis