bcp导入文件如何忽略重复?

我想导入一个CSV文件到SQL Server 2008 R2数据库表使用bcp使用像这样的命令:

bcp Database..TableName in TableName.csv -n -T -E -S localhost 

我的问题:表中包含一个也在csv文件中的行(创build数据库时插入的默认行)。

我可以以某种方式指示bcp忽略这一行吗? 我试着用最大错误计数-m,但是bcp在命中已经存在的logging(主键)时仍然中止。

我不能只删除这个logging,因为它包含了稍后需要的安装依赖信息。

bcp没有很多复杂的error handling这样的情况。

我认为你的select是:

从你的csv中删除一个重复的行。

写一个DTS / SSIS包,将允许更复杂的error handling。

bcp放到一个临时表中,并使用t-sql从临时插入到live,使用一个左连接来检查该行是否存在。 就像是:

 insert into TableName (column1, column2, ...) select t1.column1, t1.column2, ... from TempTableName t1 left join TableName t2 on t1.primarykey = t2.primarykey where t2.primarykey is null /* row does not already exist */