我用  bulk insert cjb from 'C:/Program Files/通用接口软件/TextData/20180526.txt' with(fieldterminator=' ',rowterminator= '\n') 这句话吧txt插入到了数据库sqlserver,但是如果txt的内容增加了,我想再次吧这个txt插入数据库就会报主键重复,我就是想跳过这一部分重复数据,插入txt新增的数据,如果不设主键,当然可以插入,但是那样重复的数据就太多了。

解决方案 »

  1.   

    1. 先插入到一个临时表, 
    2. insert into 正式表
    select * from 临时表 a where not exists(
    select * from  正式表 b where a.id=b.id
    )
      

  2.   

    FIRSTROW 
      

  3.   

    用sqlserver的datatable,  insert from datatable 这个datatable就是你的txt文件插入进去, 然后sqlserver会自动过滤id相同的。 
      

  4.   

    建议使用临时表作为插入临时表 然后用关联做一下 exist 。这样效率比较高一些。
      

  5.   

    你看看你的sqlserver的版本是否支持 Merge  语句MERGE 目标表 
    USING 源表 
    ON 匹配条件 
    WHEN MATCHED THEN 
    语句 
    WHEN NOT MATCHED THEN 
    语句;具体的你搜一下Merge就知道怎么用了