21

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

我该怎么办?

4

8 回答 8

56

对于这个问题,解决方案非常简单。首先选择 => 平面文件源 => 浏览您的文件 => 然后默认转到“文本限定符”,这里没有写双引号,如 (") 并按照向导的说明进行操作。

步骤是 - 首先选择 => 平面文件源 => 浏览您的文件 => 文本限定符(只写“)并按照向导的说明进行操作。

祝你好运

于 2015-02-25T11:16:23.620 回答
19

如果列中有逗号,则该列应用单引号或双引号括起来。然后,如果在该列内有一个单引号或双引号,则它之前应该有一个转义宪章,通常是 \

CSV 的示例格式

ID - 地址 - 姓名
1,“某地址,某街道,10452”,“大卫·奥”布莱恩
于 2010-11-08T12:53:17.680 回答
1

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

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

行为良好的解析器不得将“baz”和“qux”解释为两列。

或者,您可以编写自己的 import voodoo 来解决任何问题。对于以后,您可能会发现这个Groovy 框架很有用(虽然不确定您精通哪些语言)

于 2010-11-08T12:48:01.100 回答
1

大多数系统,包括 Excel,都允许将列数据用单引号括起来……

col1,col2,col3 'test1','我的 test2,带逗号',test3

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

于 2010-11-08T12:51:21.213 回答
1

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

于 2013-11-07T16:46:26.883 回答
0

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

replace(COLUMN,',',' ') as COLUMN
于 2013-03-27T10:31:51.930 回答
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
于 2014-01-21T12:40:33.397 回答
0

新版本完全支持 CSV 格式,包括混合使用 " 和 , .

BULK INSERT Sales.Orders
FROM '\\SystemX\DiskZ\Sales\data\orders.csv'
WITH ( FORMAT='CSV');
于 2020-12-06T19:02:52.617 回答