web 2.0






Do PostgreSQL para o Excel

 

Essa dica é pra quem precisa importar dados do postgres (ou qualquer outro SGBD) para o excel.

O comando é via macro e eu só usei no Excel 2003.

Sub Executa_SQL_PG(rSql As String, rPlaSaida As String, rCelSaida As String, rIP As String, rPorta As String, rBanco As String, rUsuario As String, rSenha As String, rSchema As String)

    'Esta função conecta no banco de dados, executa o sql e devolve na celula indicada
    ' rSql      => Comando a ser executado
    ' rPlaSaida => Nome da planilha onde os dados vão retornar. Se em branco, retorna na atual
    ' rCelSaida => Endereço de Célula onde os dados vão sair. Se em branco, retorna na A5
    ' rIP       => IP do servidor
    ' rPorta    => Porta onde conectar
    ' rBanco    => Nome do Banco de Dados
    ' rUsuario  => Nome do Usuario
    ' rSenha    => Senha do Usuário
    ' rSchema   => Schema a considerar
      
    
    Dim cnt As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim stSQL As String
    Dim wbBook As Workbook
    Dim wsSheet As Worksheet
    Dim rnStart As Range
    Dim stADO As String

    ' valida planilha de saida
    If rPlaSaida <> "" Then
        Sheets(rPlaSaida).Select
    End If

    ' valida celula de saida
    If rCelSaida = "" Then
        rCelSaida = "A5"
    End If

    stADO = "Driver={PostgreSQL UNICODE};Server=" & rIP & ";Port=" & rPorta & ";Database=" & rBanco & ";Uid=" & rUsuario & ";Pwd=" & rSenha & ";"
      
    Set wbBook = ActiveWorkbook
    Set wsSheet = wbBook.Worksheets(rPlaSaida)
    
    With wsSheet
        Set rnStart = .Range(rCelSaida)
    End With
    
    stSQL = rSql
   
    Set cnt = New ADODB.Connection
    
    With cnt
        .CursorLocation = adUseClient
        .Open stADO
        .CommandTimeout = 5000000
        Set rst = .Execute(stSQL)
    End With
    
     'Here we add the Recordset to the sheet from A1
    rnStart.CopyFromRecordset rst
    
    'Cleaning up.
    rst.Close
    cnt.Close
    Set rst = Nothing
    Set cnt = Nothing

End Sub

 

Dá pra fazer gravando uma macro usando a importação de dados externos do excel. Mas ai depende de ter uma odbc na maquina e o resultado nao sai da tabela (até sai, mas da muito trabalho), o que aumenta o tamanho dela.

 

É isso. Abraços!

5.0 ponto(s). Avaliado por 1 pessoas

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Comentários

Os comentários estão fechados