2012-11-06 58 views
1

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

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

下面是表的创建:

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" 
+0

什么目录领域的标准技术?请显示您的桌子的创建声明。 – fancyPants

+0

哪个版本的SQL Server? –

+0

增加了版本(2008)和创建语句 –

回答

2

FIELDTERMINATOR='","'一试。

+0

这工作无需修改文件。 –

0

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

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

2

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

FIELDTERMINATOR = '|' 

这是被许多DBA的时候逗号不能进行转义或删除