[oracle_br] Separar campos
Ola, alguem consegue dar-me uma ajuda? Necessitava de um exemplo para poder cortar um ficheiro que têm como separador o ; Exemplo tenho um ficheiro da seguinte forma: Carlos;morada;12345 Jose;localidade;123456789 A ideia era separar sempre que tiver um ; e inserir numa tabela em campos diferentes. Obrigado. Com os melhores cumprimentos, Carlos Pinto [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Separar campos
você pode utilizar o comando susbtr combinado com instr. Ex.: Primeira Palavra -- substr(string, 1, instr(string,';',1,1)-1) Segunda Palavra -- substr(string, instr(string,';',1,1)+1, instr(string,';',1,2)-instr(string,';',1,1)-1) Terceira Palavra -- substr(string, instr(string,';',1,2)+1, length(string) - instr(string,';',1,2)-1) a string sendo Jose;localidade;123456789, você teria o seguitne resultado: Primeira Palavra -- Jose Segunda Palavra -- localidade Terfceira Palavra -- 123456789 Desta forma ele vai pegar varre do primeiro caracter de sua string até o ; . Em 3 de março de 2010 10:06, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: Ola, alguem consegue dar-me uma ajuda? Necessitava de um exemplo para poder cortar um ficheiro que têm como separador o ; Exemplo tenho um ficheiro da seguinte forma: Carlos;morada;12345 Jose;localidade;123456789 A ideia era separar sempre que tiver um ; e inserir numa tabela em campos diferentes. Obrigado. Com os melhores cumprimentos, Carlos Pinto [As partes desta mensagem que não continham texto foram removidas] -- Atenciosamente Francisco Porfirio Ribeiro Neto [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Separar campos
José, pelo que entendi, ele tem um arquivo texto e gostaria de carregá-lo no banco de dados. O melhor nesse caso seria usar o SQL Loader. Você pode usá-lo de 2 formas. Se o banco de dados for 10g, você pode usá-lo com external table: CREATE TABLE agenda ( nome VARCHAR2(50), endereco VARCHAR2(50), telefone VARCHAR2(50) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY ext_tables ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY ';' MISSING FIELD VALUES ARE NULL ( nome CHAR(5), endereco CHAR(50), telefone CHAR(50) ) ) LOCATION ('arquivo.txt') ) REJECT LIMIT UNLIMITED; Ou você pode jogá-lo para uma tabela interna usando o utilitário sqlldr (SQL Loader mesmo). Para isso, o arquivo de dados você já tem, você teria que criar um arquivo de controle que tivesse a estrutura parecida com essa: LOAD DATA APPEND INTO TABLE NOME_TABELA FIELDS TERMINATED BY ; (nome,endereco,telefone) Supondo que o nome do arquivo de controle para esse caso se chame loader_agenda.ctl: sqlldr username/passw...@server control=loader_agenda.ctl Abraços, Marcus Vinicius Miguel Pedro OCP Database 9i OCP Database 10g OCE RAC 10g mvmpe...@yahoo.com.br Blog: http://www.viniciusdba.com.br On 03/03/2010, at 10:06, Carlos Pinto wrote: Ola, alguem consegue dar-me uma ajuda? Necessitava de um exemplo para poder cortar um ficheiro que têm como separador o ; Exemplo tenho um ficheiro da seguinte forma: Carlos;morada;12345 Jose;localidade;123456789 A ideia era separar sempre que tiver um ; e inserir numa tabela em campos diferentes. Obrigado. Com os melhores cumprimentos, Carlos Pinto [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
RE: [oracle_br] Separar campos
Ola Jose e Marcus, obrigado pela a ajudaVou ver a melhor opcao, mas realmente esta segunda hipótese parece ser a melhor e mais simples. Obrigado. Com os melhores cumprimentos, Carlos Pinto -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em nome de Marcus Vinicius Miguel Pedro Enviada: quarta-feira, 3 de Março de 2010 13:22 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Separar campos José, pelo que entendi, ele tem um arquivo texto e gostaria de carregá-lo no banco de dados. O melhor nesse caso seria usar o SQL Loader. Você pode usá-lo de 2 formas. Se o banco de dados for 10g, você pode usá-lo com external table: CREATE TABLE agenda ( nome VARCHAR2(50), endereco VARCHAR2(50), telefone VARCHAR2(50) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY ext_tables ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY ';' MISSING FIELD VALUES ARE NULL ( nome CHAR(5), endereco CHAR(50), telefone CHAR(50) ) ) LOCATION ('arquivo.txt') ) REJECT LIMIT UNLIMITED; Ou você pode jogá-lo para uma tabela interna usando o utilitário sqlldr (SQL Loader mesmo). Para isso, o arquivo de dados você já tem, você teria que criar um arquivo de controle que tivesse a estrutura parecida com essa: LOAD DATA APPEND INTO TABLE NOME_TABELA FIELDS TERMINATED BY ; (nome,endereco,telefone) Supondo que o nome do arquivo de controle para esse caso se chame loader_agenda.ctl: sqlldr username/passw...@server control=loader_agenda.ctl Abraços, Marcus Vinicius Miguel Pedro OCP Database 9i OCP Database 10g OCE RAC 10g mvmpe...@yahoo.com.br Blog: http://www.viniciusdba.com.br On 03/03/2010, at 10:06, Carlos Pinto wrote: Ola, alguem consegue dar-me uma ajuda? Necessitava de um exemplo para poder cortar um ficheiro que têm como separador o ; Exemplo tenho um ficheiro da seguinte forma: Carlos;morada;12345 Jose;localidade;123456789 A ideia era separar sempre que tiver um ; e inserir numa tabela em campos diferentes. Obrigado. Com os melhores cumprimentos, Carlos Pinto [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos
Re: [oracle_br] Separar campos
Carlos, você também pode usar o utl_fil_dir e criar uma procedure para tratar estes valores, ai no PL/sql vc consegue fazer o que quiser, mas o sqlloader no seu caso acredito que seja o mais prático e rápido. Douglas R. Ulmer douglas.ul...@m2v.com.br +55 (41) 9621-3425 +55 (41) 4063-7081 M2V Systems Best Software for you www.m2v.com.br NF-e CT-e SPED Em 3 de março de 2010 10:06, Carlos Pinto carlos.pin...@yahoo.com.brescreveu: Ola, alguem consegue dar-me uma ajuda? Necessitava de um exemplo para poder cortar um ficheiro que têm como separador o ; Exemplo tenho um ficheiro da seguinte forma: Carlos;morada;12345 Jose;localidade;123456789 A ideia era separar sempre que tiver um ; e inserir numa tabela em campos diferentes. Obrigado. Com os melhores cumprimentos, Carlos Pinto [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html