【发布时间】:2013-12-15 00:42:22
【问题描述】:
我有以下问题。我有一个.tsv 文件(用于电影、年份和流派)。我想把它上传到 SQL Server 2012。
我创建了一个表
CREATE TABLE Genres2
(
MovieName varchar(255) NOT NULL,
Year int NOT NULL,
Genre varchar(255) NOT NULL
PRIMARY KEY (MovieName, Year)
);
上传时
BULK INSERT Genres3
FROM 'c:\Users\genres6.tsv'
WITH
(
FIELDTERMINATOR='\t',
ROWTERMINATOR='\n'
);
我收到一个错误
重复键值为
但是notepad++ 说,文件中只有一个这样的值。
任何想法如何解决它?先感谢您。
【问题讨论】:
-
您将
(MovieName, Year)定义为主键,您确定您搜索的是这个组合而不是MovieName或Year?什么应该是独一无二的? -
最好有一个 INT 列作为您的主键,您是否考虑过使用一个标识列作为主键??
-
只是出于对 .tsv 文件的好奇,您的第一行是否有列名???
-
@MuhammedAli - “最好有一个 INT 列作为您的主键”不是一个有效的假设。使用
bigint或uniqueidentifier有很多注意事项 -
@Yosi 我相信这样说是绝对正确的,因为只要有可能,您是否拥有主键,因为与任何其他数据类型相比,INT 将为您提供更好的性能。]
标签: sql sql-server composite-primary-key