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