none
exportar dados da tabela sqlserver para arquivos de texto atravez do c# RRS feed

  • Pergunta

  • Boa tarde

    Preciso de ajuda para exporta os dados de uma tabela para sql para arquivos de textos

    ja consegui fazer do arquivos de texto para arquivo sql com esta instrução

    private

    void bntGravar_Click(object sender, EventArgs e)

    {

     

     

    if (File.Exists(txtArquivo.Text))

    {

     

    using(StreamReader fluxotexto = new StreamReader(txtArquivo.Text))

     

    while (true)

    {

     

    string linhatexto = fluxotexto.ReadLine();

     

    if (linhatexto == null)

    {

     

    break;

    }

     

    string[] quebra = linhatexto.Split(new Char[] { ',' });

    cadastra(quebra[0], quebra[1]);

    }

    }

     

    else
     

    {

     

    MessageBox.Show("Arquivo no existe");

    }

    }

     

     

    private void cadastra (string nomes, string num)

    {

     

    string strConn = "Server=Note; Database=BDFOLHA; integrated security = true;";

     

    SqlConnection conn = new SqlConnection(strConn);

    conn.Open();

     

    string strSql = "insert into TELEFONE (nome, numero) values (" + "'" + nomes + "'" + "," + "'" + num + "'" + ")";

     

    SqlCommand cmd = new SqlCommand();

    cmd.Connection = conn;

    cmd.CommandText = strSql;

    cmd.CommandType =

    CommandType.Text;

    cmd.ExecuteNonQuery();

    lblMensagem.Text=

    "Arquivo Gravado com Sucesso!" + txtArquivo.Text;

    }

     

    private void bntAbrir_Click(object sender, EventArgs e)

    {

     

    OpenFileDialog AbrirComo = new OpenFileDialog();

     

    DialogResult Caminho;

     

    StreamReader fluxotexto;

     

    string arquivo;

     

    int registro = 0;

    AbrirComo.Title =

    "Abrif Como";

    AbrirComo.FileName =

    "Nome Arquivo";

    AbrirComo.Filter =

    "Arquivos Textos (*.txt)|*.txt";

    Caminho = AbrirComo.ShowDialog();

    arquivo = AbrirComo.FileName;

     

    if (arquivo == " ")

    {

     

    MessageBox.Show("arquivo Invalido", "Salvar Como", MessageBoxButtons.OK);

    }

     

    else
     

    {

    fluxotexto =

    new StreamReader(arquivo);

     

    string linhatexto = fluxotexto.ReadLine();

     

    while (linhatexto != null)

    {

    linhatexto = fluxotexto.ReadLine();

    registro = registro + 1;

    }

    txtArquivo.Text = AbrirComo.FileName;

    fluxotexto.Close();

    txtRegistro.Text = registro.ToString();

    lblMensagem.Text =

    "Arquivo lido!";

    }

     

     

    }

    AGORA PRECISO FAZER SELEÇÃO E ATRAVEZ DE SELECT PARA DENTRO DE ARQUIVOS DE TEXTO

    • Movido Gustavo Maia Aguiar segunda-feira, 7 de novembro de 2011 21:32 (De:SQL Server - Desenvolvimento Geral)
    segunda-feira, 7 de novembro de 2011 20:01

Todas as Respostas

  • Boa Noite,

    Essa não parece ser uma forma muito eficiente de fazer, pois, abrir uma conexão e usar um INSERT a cada linha será degradante para o desempenho. Seria melhor abrir a conexão uma única vez, efetuar os INSERTs e por último encerrá-la. Assim ao invés da conexão ser aberta a cada linha, é aberta uma única vez ganhando desempenho.

    Independente do sentido, pensar linha a linha não é uma boa abordagem para importação de grandes volumes de dados (não sei se é o seu caso). Procure o utilitário BCP, ou os comandos BULK INSERT OPENROWSET (com a opção de BULK). Podem mover arquivos textos para dentro do SQL Server e exportar os dados para texto com muita facilidade e velocidade.

    Acredito que sejam alternativas mais interessantes e fáceis de manter do que o código em C#. Eventualmente você pode usar o C# para chamar o BCP em linha de comando (o que é bem interessante).

    Maiores detalhes sobre o BCP em:

    Importando e exportando dados em massa usando o utilitário bcp
    http://msdn.microsoft.com/pt-br/library/aa337544.aspx

    Exportar e importar dados do SQL Server com linha de comando (BCP)
    http://keniamilene.wordpress.com/2008/10/15/exportar-e-importar-dados-do-sql-server-com-bcp/

    SQL Server: Aprenda a usar BCP (esqueça o C# de vez em quando)
    http://www.leandrodaniel.com/reverb/post/Aprenda-a-usar-BCP.aspx

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    segunda-feira, 7 de novembro de 2011 21:32
  • Boa  noite

    Gustavo, o codigo fonte acima de certo, para importar  do .txt para sql ..

    Porem o que preciso e fazer o contrario ..pois preciso montar um áplicativo que exporta informações de algumas tabelas do sql para uma arquivo texto para então gerar estar informações para outro sitema que consegue so ler em arquivos de textos..

    lendo alguns forum encontrei estes aqui so que deu certo

     

    private void GERARARQ_Click(object sender, EventArgs e)

    {

     

    string sql = "select codigo, descricao from fornecedor";

     

    SqlConnection conn = CONEXAO.obterConexao();

     

    SqlDataAdapter adap = new SqlDataAdapter(sql, conn);

     

    DataSet ds = new DataSet();

    adap.Fill(ds);

    txRegistro.Text = ds.Tables[0].Rows[0][0].ToString();

     

    CONEXAO.fecharConexao();

     

    FileStream theFile= File.Open(@"c:\RSSISTEMA\FORNECEDOR.TXT", FileMode.OpenOrCreate);

     

    StreamWriter writer = new StreamWriter(theFile);

     

    foreach (DataRow row in ds.Tables[0])

    chega nesta linha acima da este erro

    foreach statement cannot operate on variables of type 'System.Data.DataTable' because 'System.Data.DataTable' does not contain a public definition for 'GetEnumerator'

     

    segunda-feira, 7 de novembro de 2011 22:18