none
Visual C# + SQL SERVER CE + inserção em lote RRS feed

  • Pergunta

  • Pessoal,

    Estou com um problema... Recebo dados de uma tabela em arquivos texto. Esta tabela tem aproximadamente 52000 registros. Como precisava fazer uma otimização resolvi fazer um insert em lote... Para isso, como nao achei nada melhor para sql server 2005 CE, utilizei a seguinte sintaxe:

    insert into TABELA (col1, col2, col3,...colN)
    select val1, val2, val3, ...valN
    select val1, val2, val3, ...valN
    select val1, val2, val3, ...valN
    select val1, val2, val3, ...valN
    .
    .
    .
    select val1, val2, val3, ...valN

    Porém, esse procedimento acima,  obriga ter valores com mesmo tamanho para cada coluna, isto é, o campo val 1 de cada tinha tem que ter o mesmo tamanho, por esse motivo, adicionamos valores "branco" para dar o tamanho correto.
    Ao fazer isso,  tivemos que executar, após a  inserção, um trim para retirar estes espaços...
    Fazemos este procedimento para varias tabelas, mas ao executar o trim sobre a tabela que tem mais de 52000 registros o sql retorna UNSPECIFIED ERROR!!!!

    Estou usando:

    Symbol MC 50
    Windows Mobile 5
    SQL SERVER CE 2005

    Há algum jeito melhor de fazer o insert evitando usar os espaços brancos??? pois o problema que está dando é na hora de executar o trim na tabela...

    Grato

    Fernando

    quarta-feira, 26 de setembro de 2007 18:07

Todas as Respostas

  • Fernando,

     

    Nâo entendi bem a questão dos "espaços em branco"  mas a melhor maienra de fazer o insert é usando um comando parametrizado, por exemplo:

     

    Code Block

    SqlCeCommand cmd = new SqlCeCommand("insert into tabela(valor1,valor2) values(?,?)",conexao);

    cmd.Parameters.Add(new SqlCeParameters("@valor1"));

    cmd.Parameters.Add(new SqlCeParameters("@valor2"));

     

    cmd.Parameters["@valor1"].Value = "valor1";

    cmd.Parameters["@valor2"].Value = "valor2";

     

    cmd.ExecuteNonQuery();

     

     

     

    [],

    sábado, 29 de setembro de 2007 22:25