Em 17 de março de 2010 09:58, Jesus Rodrigues
<jesusrodrigu...@gmail.com> escreveu:
> Isso mesmo,
>
> Tenho a restrição de utilizar um único arquivo.

Resposta rápida:

"Expressões Regulares"

Resposta de Consultor:

"Depende do formato do arquivo"

Minha resposta:

* Se o seu problema é que o arquivo já vem com os dados misturados, e
se você estiver em um sistema UNIX... então pode utilizar coisas como
SED e AWK com auxílio de expressões regulares (REGEX para os íntimos)
para separar os registros do seu arquivo e só então importa-los para o
banco.
* Se não estiver em UNIX, pode criar uma tabela intermediária com um
único campo TEXT e importar cada registro lá. Depois você pode
utilizar consultas com REGEX que o Postgres tem suporte para separar
os registros cada um em sua tabela. Uma variação seria utilizar uma
tabela externa e fazer o banco ler diretamente o arquivo TXT.

Existem casos mais complexos onde é preciso fazer validações,
condicionais etc. Tem arquivos de banco e programas do governo onde os
arquivos TXT são uma verdadeira zona. Se fossem XML... aí seria mais
fácil. Nestes casos você tem de apelar para o PL mesmo. Mas se os
arquivos forem muito grandes, você vai precisar testar bem para a sua
carga não levar uma eternidade. Isso pode exigir um pouco mais de
habilidade com PL.

Espero ter ajudado.


[]s
Fábio Telles
>
> Obrigado pela ajuda!
>
> Se alguém da lista tiver mais alguma ideia: Como carregar múltiplas tabelas
> utilizando um único arquivo para o pgloader?
>
> []s
>
> Em 17 de março de 2010 09:52, JotaComm <jota.c...@gmail.com> escreveu:
>>
>> Olá,
>>
>> Em 17 de março de 2010 09:46, Jesus Rodrigues <jesusrodrigu...@gmail.com>
>> escreveu:
>>>
>>> Conforme disse entendi a ideia de usar o loader,
>>>
>>>
>>> Contudo  vc usa dois arquivos arquivo_tabela1.txt e arquivo_tabela2.txt.
>>> Minha pergunta era: Séria possível utilizar um único arquivo?
>>
>> Acho que agora entendi o que você quis dizer :)
>> Na verdade eu teria um arquivo que chamaria os arquivos contendo os dados
>> das tabelas, neste caso poderiam ser vários arquivos, um para cada tabela. E
>> a sua dúvida é, ter todos os dados em um único arquivo e carregar este
>> arquivo, até onde eu sei isso não seria possível, pois não vejo como
>> interpretar quando termina os dados de uma tabela e quando começam os dados
>> do próxima tabela.
>>>
>>> Obrigado
>>>
>>> Em 17 de março de 2010 09:34, JotaComm <jota.c...@gmail.com> escreveu:
>>>>
>>>> Olá,
>>>>
>>>> Em 17 de março de 2010 09:21, Jesus Rodrigues
>>>> <jesusrodrigu...@gmail.com> escreveu:
>>>>>
>>>>> JotaComm,
>>>>>
>>>>>
>>>>> Ok posso usar o pgloader. Entretanto, não consigo imaginar como
>>>>> carregar dados para duas tabela A e B utilizando um unico arquivo. 
>>>>> Imagine,
>>>>> a chave de A é colocada em B, ok. Ex:
>>>>>
>>>>> A1
>>>>> A2
>>>>> B1,A1
>>>>> B2,A1
>>>>> B3,A1
>>>>> B1,A2
>>>>>
>>>>>
>>>>> Como o banco saberia que A1 tem os filhos ( B1, B2, B3)? Usar o loader
>>>>> é tranquilo, mas não vejo uma forma de orgazinar a estrutura das tabelas 
>>>>> em
>>>>> um unico arquivo, principalmente ser for um modelo mais complexo.
>>>>
>>>> Segundo o que você falou sua dúvida era como carregar dados para duas
>>>> tabelas, vamos ao exemplo bem simples.
>>>>>
>>>>> CREATE TABLE tab1(codigo INTEGER PRIMARY KEY);
>>>>
>>>>     CREATE TABLE tab2(codigo INTEGER PRIMARY KEY,codigo_tab01 INTEGER
>>>> REFERENCES tab1);
>>>>    Arquivo a ser carregado:
>>>>   COPY tab1 FROM '/tmp/arquivo_tabela1.txt' WITH DELIMITER ';' NULL AS
>>>> '';
>>>>   COPY tab2 FROM '/tmp/arquivo_tabela2.txt' WITH DELIMITER ';' NULL AS
>>>> '';
>>>>
>>>>>
>>>>> Abs
>>>>>
>>>>> Em 17 de março de 2010 08:51, JotaComm <jota.c...@gmail.com> escreveu:
>>>>>>
>>>>>> Olá,
>>>>>>
>>>>>> Em 17 de março de 2010 08:32, Jesus Rodrigues
>>>>>> <jesusrodrigu...@gmail.com> escreveu:
>>>>>>>
>>>>>>> Pessoal,
>>>>>>>
>>>>>>> Preciso realizar carga de grandes volumes em banco postgre. Segue um
>>>>>>> exemplo do problema.
>>>>>>
>>>>>> Uma correção, o nome do banco não é Postgre e sim Postgres ou
>>>>>> PostgreSQL.
>>>>>>>
>>>>>>> Tenho duas tabela A e B, em que A contém múltiplas ocorrências de B
>>>>>>> (1 para N). Gostaria de carregar essas tabelas via loader, semelhante ao
>>>>>>> comando existente no oracle. Meu modelo é mais complexo, mas esse foi 
>>>>>>> apenas
>>>>>>> um pequeno exemplo. Pergunta-se:
>>>>>>>
>>>>>>> 1º Existe um processo de carga semelhante (carga via loader) no
>>>>>>> postgre?
>>>>>>
>>>>>> Você quer carregar os dados de duas tabelas para um banco é isso?
>>>>>> De uma olhada no pgloader [1]
>>>>>> [1] http://pgloader.projects.postgresql.org/
>>>>>>>
>>>>>>> 2º É possível carregar as duas tabelas (A e B) utilizando um único
>>>>>>> arquivo? Por exemplo, se esse arquivo tiver os dados estruturados em 
>>>>>>> forma
>>>>>>> de um xml ou de forma hierárquica. Ou é necessário possuir dois 
>>>>>>> arquivos,
>>>>>>> uma para os dados da tabela A e outro para os dados da tabela B?
>>>>>>
>>>>>> Pode ser um arquivo para carregar as duas tabelas.
>>>>>>>
>>>>>>> 3º Para carga de grandes volumes, um processo via loader é mais
>>>>>>> eficiente que um processo de inserção “normal” (abre transação, insere 
>>>>>>> tudo,
>>>>>>> commit, fecha fecha transação)?
>>>>>>>
>>>>>>> Obrigado,
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> pgbr-geral mailing list
>>>>>>> pgbr-geral@listas.postgresql.org.br
>>>>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>>>>
>>>>>>
>>>>>>
>>>>>> []s
>>>>>> --
>>>>>> JotaComm
>>>>>> http://jotacomm.wordpress.com
>>>>>>
>>>>>> _______________________________________________
>>>>>> pgbr-geral mailing list
>>>>>> pgbr-geral@listas.postgresql.org.br
>>>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> pgbr-geral mailing list
>>>>> pgbr-geral@listas.postgresql.org.br
>>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>>
>>>>
>>>>
>>>> []s
>>>> --
>>>> JotaComm
>>>> http://jotacomm.wordpress.com
>>>>
>>>> _______________________________________________
>>>> pgbr-geral mailing list
>>>> pgbr-geral@listas.postgresql.org.br
>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>
>>>
>>>
>>> _______________________________________________
>>> pgbr-geral mailing list
>>> pgbr-geral@listas.postgresql.org.br
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>
>>
>> []s
>> --
>> JotaComm
>> http://jotacomm.wordpress.com
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>



-- 
blog: http://www.midstorm.org/~telles/
e-mail / jabber: fabio.tel...@gmail.com
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a