2

我在 CSV 中提取了大约 10 个表,其中 " 作为文本限定符。问题是我的提取在 Excel 中看起来不正确,因为有几列中有特殊字符。当它应该保留在列中时,一些列会分成新行。

  1. 我一直在使用管理工作室导出功能手动执行此操作,但是使用脚本使用双引号限定符将 10 个表提取到 CSV 的最佳方法是什么?
  2. 我必须转义逗号和双引号吗?最好的方法?
  3. 我应该如何处理我的列中的换行代码,我们需要它们来迁移到新系统,但是 PM 想要打开文件并使用 Excel 进行修改。他们可以两全其美吗?

我知道大部分问题是Excel正在解释文件,其中加载实用程序到另一个数据库可能不会对新行做任何特别的事情,但是如果我不关心excel,数据中的双引号和逗号呢,我必须逃避吗?

非常感谢。

4

3 回答 3

1

如果您使用的是 SQL Server 2005 或更高版本,导出向导将为您导出 excel 文件。右键单击数据库,选择任务-> 导出数据... 将源设置为数据库。将目标设置为 excel。在向导结束时,选择创建 SSIS 包的选项。然后,您可以创建一个作业来按计划或按需执行包。

于 2010-12-17T00:25:18.233 回答
1

我建议永远不要使用逗号作为分隔符——它们在其他地方出现得太频繁了。使用选项卡,因为选项卡不太容易包含在 Excel 表格中。

确保您永远不要以空格开头的字段,除非您希望在字段中使用该空格。

尝试将您的文本 lf's 更改为文字文本 \n。那是:

你可能有:

0,1,"第 1 行第 2 行", 3

我建议你想要:

0 1 "第 1 行\n第 2 行" 3

(假设行间距是制表符)

祝你好运

于 2010-12-16T23:02:18.227 回答
0

据我所知,你不能在 csv 列中有新行。如果您知道一列可能有逗号、双引号或换行符,那么您可以使用此 SQL 语句将值提取为有效 csv SELECT '"' + REPLACE(REPLACE(REPLACE(CAST([yourColumnName] AS VARCHAR(MAX)), '"', '""'), char(13), ''), char(10), '') + '"' FROM yourTable

于 2018-01-29T11:14:44.613 回答