CSV数据中的逗号

时间:2010-11-08 12:37:55

标签: sql-server csv-import

我有一个CSV文件,我直接导入SQL服务器表。在CSV文件中,每列用逗号分隔。但我的问题是我有一个列“地址”,此列中的数据包含逗号。所以发生的事情是地址列的一些数据将转移到其他列将导入到SQL服务器。

我该怎么办?

8 个答案:

答案 0 :(得分:38)

对于这个问题,解决方案非常简单。 first select => flat file source =>浏览你的文件=> 比默认情况下去“文本限定符”,这里没有写双引号(“),并按照向导的说明进行操作。

步骤是 - first select => flat file source =>浏览你的文件=>文本限定符(只写“)并按照向导的说明进行操作。

祝你好运

答案 1 :(得分:17)

如果列中有逗号,则该列应包含单引号或双引号。然后,如果在该列中有单引号或双引号,它应该在它之前有一个转义章程,通常是\

CSV的示例格式

ID - address - name
1, "Some Address, Some Street, 10452", 'David O\'Brian'

答案 2 :(得分:1)

我建议使用除CSV之外的其他格式,或尝试使用其他字符作为字段分隔符和/或文本分隔符。尝试查找数据中未使用的字符,例如|,#,^或@。单行的格式将变为

|foo|,|bar|,|baz, qux|

行为良好的解析器不能将'baz'和'qux'解释为两列。

或者,您可以编写自己的导入巫术来解决任何问题。对于后者,你可能会发现这个Groovy skeleton很有用(不知道你会说哪些语言很流利)

答案 3 :(得分:1)

大多数系统(包括Excel)都允许将列数据括在单引号中...

COL1,COL2,COL3 'test1','my test2,逗号',test3

另一种方法是使用Macintosh版本的CSV,它使用TAB作为分隔符。

答案 4 :(得分:1)

解决数据问题中逗号的最佳,最快捷和最简单的方法是在将Windows的列表分隔符设置设置为逗号以外的其他内容(例如管道)之后,使用Excel保存逗号分隔文件。然后,这将为您生成一个管道(或其他)分隔文件,然后您可以导入该文件。这被描述为here

答案 5 :(得分:0)

我不认为添加引用可能会有所帮助。我建议的最佳方法是将内容中的逗号替换为空格等其他标记。

replace(COLUMN,',',' ') as COLUMN

答案 6 :(得分:0)

在两侧的选择列中添加语音标记。如果列是TEXT,您还必须将列转换为NVARCVHAR(MAX)以将其转换为字符串。

SQLCMD -S DB-SERVER -E -Q "set nocount on; set ansi_warnings off; SELECT '""' + cast ([Column1] as nvarchar(max)) + '""' As TextHere, [Column2] As NormalColumn FROM [Database].[dbo].[Table]" /o output.tmp /s "," -W

答案 7 :(得分:0)

新版本完全支持CSV格式,包括“和”的混合使用。

BULK INSERT Sales.Orders
FROM '\\SystemX\DiskZ\Sales\data\orders.csv'
WITH ( FORMAT='CSV');