Jump to content
Fórum Script Brasil
  • 0

Exportar tabela do PostgreSQL para TXT de forma ordenada


dhannemann

Question

Olá. Meu problema é o seguinte:

Estou usando o código abaixo pra transferir dados de uma tabela no Banco para um TXT, mas quando abro o documento de texto, os dados estão em uma ordem aleatória. Gostaria de saber se é possível fazer um "order by" no atributo "id".

Estou usando o código:

COPY tabela TO 'C:/exemplo.txt' using delimiters ';' WITH NULL AS 'null';

Qualquer ajuda eu vou ficar muito grato

A propósito... quando têm muitas tuplas (por exemplo 6.000) o txt não abre. Alguma solução pra isso?

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0
COPY (
    select *
    from tabela
    order by id
) TO 'C:/exemplo.txt' using delimiters ';' WITH NULL AS 'null';

Quanto ao editor de texto não abrir é porque o editor tenta colocar tudo em memória. Qual é o SO? No Linux eu uso o less mesmo (linha de comando).

Edited by Kakao
Link to comment
Share on other sites

  • 0
Kakao muito obrigado pela resposta! Funcionou aqui! Mas por algum motivo estranho tá dando erro. Tirei o
using delimiters ';'  
e deu certo.
Já dá pra eu fazer as coisas. Basta no TXT substituir o valor de espaçamento por ponto e vírgula, mas se tiver uma explicação ou solução pra isso eu agradeço xD
Sobre o SO o meu é Windows 7. Será que tem alguma forma de funcionar?
Link to comment
Share on other sites

  • 0

É a 9.3.4. Mas o problema tá no using delimiters ';' mesmo. Mas isso não é problema.

O que tá me preocupando é esse erro estranho quando a tabela tem mtas linhas. Não sei se o problema são as muitas linhas, ou se é porque tem vários dados strings com mais ou menos 200 caracteres. Só sei que o TXT fica com tamanho superior a 9 MB e qd abro demora um pouco pra exibir os dados e quando abre tem uns valores estranhos. Isso aqui:

001\\000\\000\\003\\240\\004\\000\\001\\000\\000\\000\\334\\001\\000\\000\\005\\240\\004\\000\\001\\000\\000\\000\\344\\000\\000\\000 \\244\\002\\000!\\000\\000\\000\\302\\000\\000\\000\\000\\000\\000\\0002014:03:24 15:46:23\\0005bf23dd52585e1fb6f78a25416ae3778\\000\\000\\003\\000\\002\\000\\007\\000\\004\\000\\000\\0000100\\001\\020\\004\\000\\001\\000\\000\\000\\261\\011\\000\\000\\002\\020\\004\\000\\001\\000\\000\\000\\266\\015\\000\\000\\000\\000\\000\\000\\006\\000\\003\\001\\003\\000\\001\\000\\000\\000\\006\\000\\000\\000\\032\\001\\005\\000\\001\\000\\000\\000\\\\\\001\\000\\000\\033\\001\\005\\000\\001\\000\\000\\000d\\001\\000\\000(\\00

Muitas vezes esses caracteres estranhos ai.

Acho que devo abrir outro tópico pra esse problema? Acho que é mais certo, já que o do título já foi resolvido.

Link to comment
Share on other sites

  • 0

Mas o problema tá no using delimiters ';' mesmo.

É "delimiter" no singular sem o "s" no final e sem a palavra "using". E o "WITH" é antes de todas as opções:

WITH delimiter ';', NULL 'null';
Verifique as codificações do servidor e do cliente

show server_encoding;
show client_encoding;
Tente usar a codificação do cliente no "COPY"

WITH delimiter ';', NULL 'null', ENCODING 'LATIN1';
Edited by Kakao
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      652k
×
×
  • Create New...