Ir para conteúdo
Fórum Script Brasil
  • 0

Como carregar tabelas com "largura fixa"


Guest --Vinicius --

Pergunta

Guest --Vinicius --

Olá.

Meu problema é o seguinte: Preciso carregar uma tabela .dat no psql com mais de 4 milhões de linhas e 50 colunas, só que as colunas da mesma estão no formato "fixed width", provavelmente alguém que exportou do Access ou algo do tipo. Até aí tudo bem, poderia simplesmente substituir todo <espaço> ou conjunto deles por um <tab> e pronto. Foi o que eu fiz e funcionou, até eu descobrir que a tabela possui vários "buracos". Então, substituindo os espaços eu acabei desalinhando as colunas de alguns milhares de linhas. Pensei em substituir cada buraco por um flag qualquer, tipo -9.999, mas quando pensei no tamanho da tabela achei melhor pedir ajuda para alguém que entendesse bem do assunto antes de passar um bom tempo fazendo trabalho inútil

Existe algum jeito de fazer isso direto no psql ou vou precisar "apelar" para algum script ou algo do tipo?

muito obrigado!

Vinicius

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Guest --Vinicius --

Olá novamente... desculpe a demora.. fiquei sem internet por uns dias.

Consegui resolver o problema de uma outra forma, fiz um script....

com o comando "awk" eu extraí cada coluna do arquivo original para um arquivo separado, utilizando o FIELDWIDTHS (para isso tive que medir o tamanho de cada uma das 75 colunas), depois substitui todos os <espaços> por <tab> utilizando o "tr" e finalmente, com o "paste" remontei o arquivo separado por <tab>. Fiz um loop para todas as colunas e até que foi rápido. Isso foi bom porque tudo ficou bem alinhado, mesmo com buracos no meio da tabela. Só que quando vou carregar no psql, aparece outro pequeno problema: para carregar a tabela eu uso...

CREATE TABLE hes (

sequence double precision,

hename varchar(80),

hesid varchar(80),

j_m double precision,

...

..

.

mas, por exemplo, na coluna "j_m" eu tenho alguns buracos... e o psql reclama quando vê um campo vazio. Pensei em chamar todo mundo de "varchar" (a tabela carrega sem reclamar), mas aí percebi que não vou conseguir fazer contas com os números certo? Como eu posso fazer para contornar isso?

Valeu!

Link para o comentário
Compartilhar em outros sites

  • 0

Para ter dados consitentes precisamos analisar corretamente esse campo.

Voce disse que exitem "burracos" nessa coluna. Isso seria dados nulos?

Se sim, a pergunta é: esse campo tem restrição de not null?

Voce disse que esse campo pode ser usado para fazer calculos, então provavelmente ele não pode ser nulo.

A idéia é substituir os "burracos" por 0 "zeros".

mas, por exemplo, na coluna "j_m" eu tenho alguns buracos... e o psql reclama quando vê um campo vazio. Pensei em chamar todo mundo de "varchar" (a tabela carrega sem reclamar), mas aí percebi que não vou conseguir fazer contas com os números certo? Como eu posso fazer para contornar isso?

Valeu!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...