我有一个 CSV 文件,我直接将其导入到 SQL 服务器表中。在 CSV 文件中,每一列都用逗号分隔。但是我的问题是我有一个“地址”列,并且该列中的数据包含逗号。所以发生的事情是地址列的一些数据将进入其他列将导入到 SQL 服务器。
我该怎么办?
我有一个 CSV 文件,我直接将其导入到 SQL 服务器表中。在 CSV 文件中,每一列都用逗号分隔。但是我的问题是我有一个“地址”列,并且该列中的数据包含逗号。所以发生的事情是地址列的一些数据将进入其他列将导入到 SQL 服务器。
我该怎么办?
对于这个问题,解决方案非常简单。首先选择 => 平面文件源 => 浏览您的文件 => 然后默认转到“文本限定符”,这里没有写双引号,如 (") 并按照向导的说明进行操作。
步骤是 - 首先选择 => 平面文件源 => 浏览您的文件 => 文本限定符(只写“)并按照向导的说明进行操作。
祝你好运
如果列中有逗号,则该列应用单引号或双引号括起来。然后,如果在该列内有一个单引号或双引号,则它之前应该有一个转义宪章,通常是 \
CSV 的示例格式
ID - 地址 - 姓名 1,“某地址,某街道,10452”,“大卫·奥”布莱恩
我建议要么使用 CSV 以外的其他格式,要么尝试使用其他字符作为字段分隔符和/或文本分隔符。尝试查找数据中未使用的字符,例如 |、#、^ 或 @。单行的格式将变为
|foo|,|bar|,|baz, qux|
行为良好的解析器不得将“baz”和“qux”解释为两列。
或者,您可以编写自己的 import voodoo 来解决任何问题。对于以后,您可能会发现这个Groovy 框架很有用(虽然不确定您精通哪些语言)
大多数系统,包括 Excel,都允许将列数据用单引号括起来……
col1,col2,col3 'test1','我的 test2,带逗号',test3
另一种选择是使用 Macintosh 版本的 CSV,它使用 TAB 作为分隔符。
解决数据中逗号问题的最佳、最快和最简单的方法是在将 Windows 的列表分隔符设置为逗号以外的其他内容(例如管道)后,使用 Excel 保存逗号分隔文件。然后,这将为您生成一个管道(或其他)分隔文件,然后您可以导入该文件。这在此处进行了描述。
我不认为添加引号会有所帮助。我建议的最佳方法是将内容中的逗号替换为其他标记,例如空格或其他标记。
replace(COLUMN,',',' ') as COLUMN
将语音标记附加到两侧的选择列中。如果该列是 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
新版本完全支持 CSV 格式,包括混合使用 " 和 , .
BULK INSERT Sales.Orders
FROM '\\SystemX\DiskZ\Sales\data\orders.csv'
WITH ( FORMAT='CSV');