.NET - Convertendo uma fonte de dados MS Access para PostgreSQL


 No artigo de hoje vou mostrar como converter uma fonte de dados MS Access para PostgreSQL e acessar os dados usando a plataforma .NET.

Você já precisou converter uma fonte de dados do MS Access para PostgreSQL ?

Procurando no Google você vai encontrar muitas ferramentas que se propõe a realizar essa tarefa.

Nota:  No site do PostgreSQL existe um link para uma ferramenta que faz isso: https://dbconvert.com/access/postgresql/ mas ela não é grátis.

No site da empresa Bullzip existe uma ferramenta gratuita chamada : Access to PostgreSQL que faz a conversão. É sobre essa ferramenta que o artigo vai tratar.

Para poder usar a ferramenta e enviar as tabelas do MS Access diretamente para o PostgreSQL você vai precisar baixar um driver ODBC para o PostgreSQL neste link : http://www.postgresql.org/ftp/odbc/versions/msi/. (Não é preciso configurar uma conexão ODBC o programa faz isso para você.)

Convertendo MS Access para PostgreSQL

Então após baixar e instalar o driver ODBC e a ferramenta a conversão é uma tarefa bem simples.

Vou mostrar o passo a passo da conversão do banco de dados Northwind.mdb para PostgreSQL:

1-  A tela inicial do programa

2-  O formulário para informar a fonte de dados MS Access a ser convertida

3-  O formulário para definir o modo de acesso e informar os dados da conexão com o PostgreSQL e o nome de destino

4-  O formulário onde podemos selecionar as tabelas que serão convertidas

5-  O formulário com as opções de transferência

6-  O formulário informando o progresso da conversão e ao final mostrando o resultado da conversão

Abrindo o pgAdmin III podemos verificar a existência do schema Northwind_pgsql que foi gerado pela ferramenta como conversão do banco de dados Northwind.mdb.

Agora para mostrar que os dados existem e que podemos acessá-los usando o PostgreSQL vou criar um exemplo usando a linguagem VB .NET e também C#.

Nota:  Para saber mais sobre as strings de conexão usadas para o PostgreSQL veja esse link : https://www.connectionstrings.com/postgresql/

Recursos usados

Conectando com o banco de dados Northwind_pgsql

Acessar um banco de dados PostegreSQL na plataforma .NET é muito simples. Vou criar uma solução com dois projetos: um projeto VB .NET e outro C#, para acessar o banco de dados que convertemos.

Abra o VS Community 2015  e clique em New Project;

A seguir selecione Other Project Types e clique em Visual Studio Solutions;

Selecione Blank Solution e informe o nome Acessando_PostgreSQL e clique em OK;

Agora vamos incluir dois projetos nesta solução.

No menu File clique em New Project;

Selecione a linguagem Visual C# e o template Windows Forms Application e informe o nome PostgreSQL_CSharp e clique em OK;

Repetindo o procedimento acima.

Selecione a linguagem Visual Basic e o template Windows Forms Application e informe o nome PostgreSQL_VBNET e clique em OK;

Agora vamos incluir a referência ao conector PostgreSQL via Nuget em ambos os projetos da solução. Vou usar o Npgsql.

No menu Tools clique em Nuget Package Manager e a seguir em Manage Nuget Packages for Solution;

Selecione o pacote Npgsql e clique em Install para os dois projetos da solução:

 

Agora temos tudo pronto para acessar o banco de dados Northwind_pgsql.

Vou abrir o projeto VB .NET e definir uma interface de usuário bem simples onde iremos ter os seguintes controles:

O leiaute do formulário deverá ficar assim :

Neste momento vamos definir o código do evento Click do botão de comando para acessar o banco de dados e a tabela informada exibindo os dados no controle DataGridView:

Imports System.Data
Imports Npgsql
Public Class form1
    Shared serverName As String = "127.0.0.1"
    Shared port As String = "5432"
    Shared userName As String = "postgres"
    Shared password As String = "sua_senha"
    Shared databaseName As String = "Northwind_pgsql"
    Private pgsqlConnection As NpgsqlConnection = Nothing
    Private connString As String = Nothing
    Private Sub btnExecutar_Click(sender As Object, e As EventArgs) Handles btnExecutar.Click
        Dim ConexaoPG As String = String.Format("Server={0};Port={1};User Id={2};Password={3};Database={4};", 
serverName, port, userName, password, databaseName)
        Dim conn As NpgsqlConnection = Nothing
        Try
            'Instancia NpgsqlConnection na variavel conn
            conn = New NpgsqlConnection(ConexaoPG)
            'Abre a conexão
            conn.Open()
            'Declara e atribui a instrucao SQL de consulta
            Dim SQL As String = "SELECT * FROM public." & cboTabelas.Text
            'Instancia o NpgsqlDataAdapter responsavel pela comunicação
            'é feita a leitura dos dados preenchendo o dataset
            Dim da As Npgsql.NpgsqlDataAdapter = New NpgsqlDataAdapter(SQL, conn)
            'Instancia um DataSet
            Dim ds As DataSet = New DataSet()
            'Preenche o DataAdapter
            da.Fill(ds, cboTabelas.Text)
            'Atribui um Datasource a Grid
            dgvDados.DataSource = ds.Tables(0).DefaultView
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            If Not conn Is Nothing Then
                If conn.State = ConnectionState.Open Then
                    conn.Close()
                End If
            End If
        End Try
    End Sub
    Private Sub form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        cboTabelas.SelectedIndex = 0
    End Sub
End Class

O código CSharp é visto a seguir:

using System;
using System.Data;
using System.Windows.Forms;
using Npgsql;
namespace PostgreSQL_CSharp
{
    public partial class Form1 : Form
    {
        static string serverName = "127.0.0.1";
        static string port = "5432";
        static string userName = "postgres";
        static string password = "sua_senha";
        static string databaseName = "Northwind_pgsql";
        public Form1()
        {
            InitializeComponent();
        }
        private void btnExecutar_Click(object sender, EventArgs e)
        {
            string ConexaoPG = string.Format("Server={0};Port={1};User Id={2};Password={3};Database={4};", 
serverName, port, userName, password, databaseName);
            NpgsqlConnection conn = null;
            try
            {
                //Instancia NpgsqlConnection na variavel conn
                conn = new NpgsqlConnection(ConexaoPG);
                //Abre a conexão
                conn.Open();
                //Declara e atribui a instrucao SQL de consulta
                string SQL = "SELECT * FROM public." + cboTabelas.Text;
                //Instancia o NpgsqlDataAdapter responsavel pela comunicação
                //é feita a leitura dos dados preenchendo o dataset
                Npgsql.NpgsqlDataAdapter da = new NpgsqlDataAdapter(SQL, conn);
                //Instancia um DataSet
                DataSet ds = new DataSet();
                //Preenche o DataAdapter
                da.Fill(ds, cboTabelas.Text);
                //Atribui um Datasource a Grid
                dgvDados.DataSource = ds.Tables[0].DefaultView;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                if ((conn != null))
                {
                    if (conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                    }
                }
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            cboTabelas.SelectedIndex = 0;
        }
    }
}

Executando o projeto e selecionando uma tabela iremos obter os dados exibidos no controle datagridview.

Nota:  Se você obter a mensagem de erro :  “relation <tablename> does not exist.”   verifique as permissões e privilégios do usuário que esta acessando a tabela.

Pegue o projeto completo aqui :   Acessando_PostgreSQL.zip

Jesus lhes respondeu, e disse: A minha doutrina não é minha, mas daquele que me enviou.
Se alguém quiser fazer a vontade Dele, pela mesma doutrina conhecerá se ela é de Deus, ou se eu falo de mim mesmo.

João 7:16,17

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

     Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti