在SQL中将数据从一个数据库导出到另一个数据库时忽略重复的主键

时间:2014-09-11 13:19:03

标签: sql sql-server export primary-key

我目前正在尝试将过去3个月的数据从我的SQL Server上的表导出到新数据库中的新表(相同列等但主键略有不同)。我这样做时出错,因为新表中有一个重复的主键。我想知道是否有办法忽略此错误或只插入发生此主键冲突的值中的一个。

到目前为止我已经

SELECT * 
FROM [action] 
WHERE systemdatetime < getdate() 
    AND systemdatetime > DATEADD(month, -3, getdate())

我目前正在使用导出向导

3 个答案:

答案 0 :(得分:2)

我不知道你的PK字段是什么,但我们可以说它是ID。您可以对所有具有相同ID的记录进行编号,然后从每个序列中拉出第一个记录。请注意,我按日期订购了这个,所以最早的日期将是选定的日期。

SELECT ID, systemdatetime, etc..
FROM (
  SELECT *,ROW_NUMBER() OVER(PARTITION BY ID ORDER BY systemdatetime) Row
  FROM [action] 
  WHERE systemdatetime < getdate() 
    AND systemdatetime > DATEADD(month, -3, getdate())
) tmp
WHERE Row = 1

答案 1 :(得分:0)

创建目标表的无键副本并将数据转储到该目标表中。从那里,你可以决定什么是真正独特的,什么不是。

答案 2 :(得分:0)

如果您不想存储重复的行,则应该使用索引选项IGNORE_DUP_KEY = ON在另一个数据库表上创建主键