【发布时间】:2016-12-02 09:18:06
【问题描述】:
我正在尝试使用 BULK INSERT 将行从 .csv 文件添加到现有表。现在我有一个用于测试目的的小文件,格式如下:
UserID,Username,Firstname,Middlename,Lastname,City,Email,JobTitle,Company,Manager,StartDate,EndDate
273,abc,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd
274,dfg,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd
275,hij,dd,dd,dd,dd,dd,dd,dd,dd,dd,dd
这就是我的查询当前的样子:
BULK INSERT DB_NAME.dbo.Users
FROM 'C:\data.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
当我执行此查询时,它返回 1 行受影响。我检查了表中的条目,发现文件中的数据作为单行插入到表中。
这可能是什么原因造成的?我想要完成的是将这些行插入表中的各个行中。请参阅下面的(长)图像
第一列实际上是一个 IDENTITY 列,所以在文件中我只是指定了一个整数,即使它会被自动生成的 ID 覆盖,因为我不确定如何告诉查询从第二个字段开始插入。
实际表中创建的列多于文件中指定的列,因为并非所有内容都需要填写。会不会是这个原因?
【问题讨论】:
-
在您最喜欢的文本编辑器中查看所有符号是什么。例如,在 Notepad++ 中启用“显示所有符号”。也许您的行以
\r而不是\r\n终止。 -
为了测试,您能否创建一个没有身份字段的临时表并取出 WITH 语句以查看您返回的数据?
-
根据字符编码,换行符的标记不同。你试过
/r/n吗?
标签: sql-server csv bulkinsert