Exportar dados de banco postgresql para csv

746 views
Skip to first unread message

Bruno Barbosa

unread,
May 3, 2012, 8:29:20 AM5/3/12
to python...@googlegroups.com
Olá pessoal,

Alguém conhece uma biblioteca que auxilie na exportação de dados de uma tabela em postgresql para csv?

Abraços.
--
Bruno Barbosa
Web Developer and Free Software Enthusiast
http://brunobarbosa.com.br/
http://twitter.com/bruninbsb

Rafael Novello

unread,
May 3, 2012, 8:36:34 AM5/3/12
to python...@googlegroups.com
E ai Bruno,

Não conheço uma biblioteca que pegue seus dados no postgresql e gere seu csv, mas existe o módulo csv da biblioteca padrão [1].

Ai o jeito seria vc escrever o código que leia os dados no banco e os carregue na memória. Um ORM ajudaria bastante para abstrair a camada do banco de dados, entregando os dados de uma forma mais tranquila pra vc.


Abç
Atenciosamente,
Rafael Novello.


2012/5/3 Bruno Barbosa <bsbr...@gmail.com>

--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

Bruno Barbosa

unread,
May 3, 2012, 10:05:10 AM5/3/12
to python...@googlegroups.com
Sim, verdade.

Já utilizo um ORM. Estou trabalhando com SQLAlchemy.
A biblioteca CSV com certeza será útil.

Obrigado.

--
Bruno Barbosa
Web Developer and Free Software Enthusiast
http://brunobarbosa.com.br/
http://twitter.com/bruninbsb



2012/5/3 Rafael Novello <rafa.rei...@gmail.com>

Evandro Carlos

unread,
May 3, 2012, 10:21:26 AM5/3/12
to python...@googlegroups.com

Shander Lyrio

unread,
May 3, 2012, 10:42:47 AM5/3/12
to python...@googlegroups.com
2012/5/3 Evandro Carlos <evand...@gmail.com>:
> http://stackoverflow.com/questions/5492488/python-postgresql-ignoring-the-last-column-from-csv-file
>
> Da uma olhada nisso deve ajudar.
>
> Em 03/05/2012 09:29, "Bruno Barbosa" <bsbr...@gmail.com>escreveu:
>
>
> Olá pessoal,
>
> Alguém conhece uma biblioteca que auxilie na exportação de dados de uma
> tabela em postgresql para csv?

Conecte-se ao banco de dados do postgresql via psql e de o seguinte comando:

COPY nome_da_tabela to '/tmp/nome_do_arquivo.csv' delimiters ',' ;

Está feito.

--
Shander Lyrio
http://about.me/shander

SleX Luthor

unread,
May 18, 2012, 7:42:21 AM5/18/12
to python...@googlegroups.com
faz com psycopg2 mesmo veja ai:

  1. # -*- coding: UTF-8 -*-
  2. """
  3. -------------------------------------------------------------------------------
  4. # @name:        PostgreSqlTableToCSV.py
  5. # @purpose:     Exports data from a query of a database postgres
  6.                to a CSV file
  7. # @author:      SleX - sl...@slex.com.br
  8. # @created:     18/05/2012
  9. #-------------------------------------------------------------------------------
  10. """
  11.  
  12. import psycopg2
  13.  
  14. def PostgreSqlTableToCSV(dsn, qry, filecsv, separator=',', quoteStr='"%s"'):
  15.     resp = False
  16.     con = psycopg2.connect(dsn)
  17.     cur = con.cursor()
  18.     try:
  19.         cur.execute(qry)
  20.         closeFile = False
  21.         if not hasattr(filecsv, 'write'):
  22.             closeFile = True
  23.             filecsv = open(filecsv,'w')
  24.         filecsv.write(
  25.             separator.join([quoteStr % inf[0] for inf in cur.description])
  26.         )
  27.         for item in cur.fetchall():
  28.             filecsv.write('\n'+
  29.                 separator.join([quoteStr % str(value) for value in item])
  30.             )
  31.         resp = True
  32.     finally:
  33.         cur.close()
  34.         con.close()
  35.         if hasattr(filecsv, 'close') and closeFile:
  36.             filecsv.close()
  37.     return resp
  38.  
  39. def example():
  40.     #exemplo 1
  41.     dsn = "user=postgres password=postgres dbname=cr host=localhost"
  42.     print PostgreSqlTableToCSV(
  43.         dsn,
  44.         'SELECT * FROM cr_cid_cidade',
  45.         'c:/tmp/cr_cid_cidade_1.csv',
  46.     )
  47.     #exemplo 2
  48.     dsn = "user=postgres password=postgres dbname=cr host=localhost"
  49.     arq = open('c:/tmp/cr_cid_cidade_2.csv','w')
  50.     print PostgreSqlTableToCSV(
  51.         dsn,
  52.         'SELECT * FROM cr_cid_cidade',
  53.         arq,
  54.     )
  55.     arq.close()
  56.  
  57.  
  58. if __name__ == '__main__':
  59.     example()



Reply all
Reply to author
Forward
0 new messages