1

我需要将 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"
4

3 回答 3

2

试一试FIELDTERMINATOR='","'

于 2012-11-06T14:13:00.580 回答
2

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

FIELDTERMINATOR = '|' 

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

于 2012-11-06T14:14:46.500 回答
0

您可以尝试使用格式文件进行批量插入。这允许您为每个字段指定不同的终止符等。例如,大多数字段可能将 fieldterminator 设置为,,而有问题的包含逗号的字段可能是",".

另一种可能性是在 excel 中打开 csv 并创建一个链接服务器

于 2012-11-06T14:14:09.373 回答