当字段中有“,”时,将CSV导入SQL

时间:2012-11-06 13:57:09

标签: sql sql-server-2008 csv

我需要将CSV导入SQL 2008数据库。其中一个字段是一个目录,显然有超过1600行在字段名称中有“,”。此字段现在在我的数据库中错误地分解。总共有超过100000行。

如何避免这种情况并修改我的陈述?

这是表的创建:

create table tablename
(
Directory       varchar(1000),
Name            varchar(1000),
Size            varchar(50),
CreationTime    varchar(100),
LastAccessTime  varchar(100),
LastWriteTime   varchar(100)
)

以下是我用来导入它的代码:

BULK
INSERT tablename
FROM 'c:\EmailCSVs\myfile.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO

目录字段中的示例如下所示:

\\drive\share\nightly.175\savemail\user\(Monday, January 10, 2011, 500 PM)

以下是CSV中的示例行:

"\\drive\share\nightly.175\savemail\user\(Monday, January 10, 2011, 500 PM)","Archive #1.1.pst","271360","1/14/2011 8:37:05 AM","6/1/2011 12:00:38 AM","1/14/2011 2:45:27 PM"

3 个答案:

答案 0 :(得分:2)

尝试FIELDTERMINATOR='","'

答案 1 :(得分:2)

最简单的方法是用管道char |替换csv文件中的所有字段分隔逗号然后设置

FIELDTERMINATOR = '|' 

当逗号无法转义或删除时,这是许多DBA使用的标准技术

答案 2 :(得分:0)

您可以尝试使用format file批量插入。这允许您为每个字段指定不同的终止符。例如,大多数字段可能将fieldterminator设置为,,而有问题的逗号字段可能为","

另一种可能性是在excel中打开csv并为其创建linked server