我需要将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"
答案 0 :(得分:2)
尝试FIELDTERMINATOR='","'
。
答案 1 :(得分:2)
最简单的方法是用管道char |替换csv文件中的所有字段分隔逗号然后设置
FIELDTERMINATOR = '|'
当逗号无法转义或删除时,这是许多DBA使用的标准技术
答案 2 :(得分:0)
您可以尝试使用format file批量插入。这允许您为每个字段指定不同的终止符。例如,大多数字段可能将fieldterminator设置为,
,而有问题的逗号字段可能为","
。
另一种可能性是在excel中打开csv并为其创建linked server。