bcp arquivo de importação como ignorar duplicatas?

1

Eu quero importar um arquivo csv para uma tabela de banco de dados do SQL Server 2008 R2 usando bcp usando um comando como este:

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

Meu problema: a tabela contém uma linha que também está no arquivo csv (linha padrão inserida na criação do banco de dados).

Posso de alguma forma instruir o bcp a ignorar esta linha? Eu tentei -m para a contagem máxima de erros, mas o bcp ainda aborta quando atinge o registro já existente (chave primária).

Não posso excluir este registro, pois ele contém informações dependentes da instalação que serão necessárias posteriormente.

    
por Sam 27.09.2010 / 16:36

1 resposta

1

O bcp não tem muito tratamento de erros sofisticado para situações como esta.

Eu acho que suas alternativas são:

Remova a linha duplicada do seu csv.

Escreva um pacote DTS / SSIS que permita um tratamento de erros mais sofisticado.

bcp em uma tabela temporária e use t-sql para inserir do temporário para o live, usando uma junção esquerda para verificar a existência da linha. Algo como:

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 */
    
por 27.09.2010 / 23:04